Как исправить @ViewChild ElementRef неопределенный в NativeScript Angular?
Я занимаюсь разработкой мобильного приложения с помощью NativeScript (CLI v5.2.0) Angular (v7.2.3), и у меня есть @ViewChild ElementRef, который не был определен.
Я проверил наличие ViewChild и ElementRef в импорте "@angular/core", переименовал мою переменную @ViewChild, изменил область видимости с общедоступной на частную, переместил console.log() в ngAfterViewInit (см.: https://github.com/NativeScript/nativescript-angular/issues/188) и перестроил мой проект с помощью "tns debug android --clean --bundle".
component-name.component.ts:
@ViewChild("test") private _scrollView: ElementRef;
constructor(page: Page) {
page.actionBarHidden = true;
}
ngAfterViewInit() {
console.log("ScrollView element:", this._scrollView.nativeElement);
}
...
component-name.component.html:
<GridLayout columns="*" rows="*, auto">
<ScrollView (swipe)="onSwipe($event)" col="0" row="0" #test>
<StackLayout>
...
Если я поставлю #test в начале, сразу после элемента ScrollView, у меня будет переменная this._scollView, которая не определена.
Если я поставлю #test в конце, как в примере выше, все работает, и я покажу свой элемент в console.log(this._scrollView.nativeElement)!
Жук?
1 ответ
Предыдущий код:
import { ElementRef } from "@angular/core";
@ViewChild("myElement") myElement: ElementRef;
Перенесенный код:
import { ElementRef } from "@angular/core";
@ViewChild("myElement", { static: false }) myElement: ElementRef;
{static: false} means nfAfterInit,
{static: true} mean ngInit
это работает для меня.