Получить текущий элемент из сервиса (цикл Hook проблемы)

Try this one:
Add itemizedOverlay class:

public class AndroidGoogleMapsActivity extends MapActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Displaying Zooming controls
        MapView mapView = (MapView) findViewById(R.id.mapview);
        mapView.setBuiltInZoomControls(true);


        MapController mc = mapView.getController();
        double lat = Double.parseDouble("48.85827758964043");
        double lon = Double.parseDouble("2.294543981552124");
        GeoPoint geoPoint = new GeoPoint((int)(lat * 1E6), (int)(lon * 1E6));
        mc.animateTo(geoPoint);
        mc.setZoom(15);
        mapView.invalidate(); 


        /**
         * Placing Marker
         * */
        List<Overlay> mapOverlays = mapView.getOverlays();
        Drawable drawable = this.getResources().getDrawable(R.drawable.mark_red);
        AddItemizedOverlay itemizedOverlay = 
             new AddItemizedOverlay(drawable, this);


        OverlayItem overlayitem = new OverlayItem(geoPoint, "Hello", "Sample Overlay item");

        itemizedOverlay.addOverlay(overlayitem);
        mapOverlays.add(itemizedOverlay);

    }

    @Override
    protected boolean isRouteDisplayed() {
        return false;
    }
}
1
задан orphen92300 18 January 2019 в 10:05
поделиться

1 ответ

Ваш шаблон:

<div *ngFor="let billingItem of billings" class="LG_invoice-item" #billing (click)="setCurrentBilling(billingItem)" >
  <div class="LG_form-title" (click)="billing.value = !billing.value">
    {{billingItem.month}} {{billingItem.years}}
  </div>
  <app-billing *ngIf="billing.value" ></app-billing>
</div>

Итак, у вас есть родительский div и вложенный, оба с прослушивателем щелчков.

Первый, который должен быть выполнен, является внутренним:

(click)="billing.value = !billing.value"

, который делает шаблон для повторного рендеринга, показывая теперь новый элемент:

<app-billing *ngIf="billing.value" ></app-billing>

Так что ngOnInit этого элемента выполняется:

ngOnInit() {
    this.billingsService.log(); 
    setTimeout(() => { 
      this.billingsService.log(); 
      }, 0);

    //console.log('currentelem: ', );
  }

Здесь вы еще не установили current. И затем, после того, как этот первый цикл завершен, в действие вступает другой обработчик щелчков:

(click)="setCurrentBilling(billingItem)"

И после этого будет разрешен setTimeout из первого click.

Решение: обработчик кликов может выполнять обе задачи:

<div *ngFor="let billingItem of billings" class="LG_invoice-item" #billing 
    (click)="billing.value = !billing.value;setCurrentBilling(billingItem)" >
  <div class="LG_form-title">
    {{billingItem.month}} {{billingItem.years}}
  </div>
  <app-billing *ngIf="billing.value" ></app-billing>
</div>
0
ответ дан Pablo Lozano 18 January 2019 в 10:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: