ngOnInit и привязка данных не работают в ModalView NativeScript Angular - PullRequest
0 голосов
/ 03 мая 2020

Я искренне ищу 2 дня и пытаюсь решить эту проблему из-за недостатка знаний. Я недавно запустил Nativescript и у меня средний уровень Angular.

Проблема

  • Я пытаюсь открыть модальный ShopInfosComponent в моем map.component.ts:
const options: ModalDialogOptions = {
      viewContainerRef: this.viewContainerRef,
      fullscreen: false,
      context: {},
    };

    this.modalService.showModal(ShopInfosComponent, options);

ShopInfosComponent принадлежит BrowseModule, где я понимаю, что мне нужно добавить его в

@NgModule({
    imports: [
        NativeScriptCommonModule,
        BrowseRoutingModule,
    ],
    declarations: [
        BrowseComponent,
        MapComponent,
        ShopInfosComponent
    ],
    entryComponents: [ShopInfosComponent]
})

BrowseModule принадлежит верхнему модулю AppModule.

Реальная проблема:

Модал ShopInfosComponent успешно открывается по назначению, но нет привязки данных , на самом деле ngOnInit не называется (в отличие от Конструктор).

Это содержимое модального shop-infos.component.html:

<StackLayout>
    <Label [text]="result"></Label>
    <Label text="Static Text"></Label>
</StackLayout>

Что я пробовал

Я пытался открыть модал прямо внутри AppModule с app.component.ts, который странно работает! Он не работает только при установке внутри другого модуля, который импортируется с помощью AppModule.

Используемый шаблон приложения - это Navigation Drawer из Nativescript.

Возможно, это проблема с ленивой загрузкой маршрутизации приложения?

Я загрузил графическую документацию приложения c и исходный код на свой сайт: https://luiswillnat.eu/stack/nativescript/databinding/

Пожалуйста, не стесняйтесь использовать, я действительно готов найти решение и учиться у него.

enter image description here

1 Ответ

1 голос
/ 03 мая 2020

Как @Lasanga Guruge упомянул в комментариях, это текущая проблема из nativescript-angular.

Текущее решение проблемы привязки данных и ngOnInit в модальном представлении заключается в обнаружении изменений вручную.

setTimeout(() => {
   this.zone.run(() => this.result = "WORKING")
});

или

setTimeout(() => {
   this.changeDetectorRef.detectChanges();
});

- обходные пути на данный момент.

...