0
アプリケーションを実行すると、ngOnInitを持つすべてのログがコンソールに表示されますが、アプリケーションはコンポーネントの変数とl18nのテキストを表示せずにスケルトンビューのみを生成します。 ngOnInitまたはそれが必要なので動作しません。なぜなら、私はコンストラクタで呼び出されなければならないからです。テンプレート内のAngular2初期変数。
これらの問題は、コンポーネントへのリンクを2回目にクリックしたときに消えてしまい、すべてのものが読み込まれたときに消えてしまいます。これは、アプリケーション内のすべてのコンポーネントと、angular2スターター・ガルプで構築されるすべてのアプリケーションで発生します。
2回目のクリックだけで、(コンストラクタで呼び出されたときに)ngOnInitを表示および呼び出しする変数がロードされるのはなぜですか?
export class SettingsDevicesComponent implements OnInit {
**variables**
@Component({
selector: 'as-settings-devices',
templateUrl: 'app/settings-devices/settings-devices.component.html',
changeDetection: ChangeDetectionStrategy.OnPush,
styleUrls: ['app/settings-devices/settings-devices.component.css'],
providers: [Communication],
pipes: [TranslatePipe],
directives: [REACTIVE_FORM_DIRECTIVES, NgClass, NgStyle, CORE_DIRECTIVES,ROUTER_DIRECTIVES]
})
constructor(private _cm: Communication,
private _cdRef: ChangeDetectorRef,
private _router: Router,
private _sanitizer: DomSanitizationService,
@Inject(ElementRef) elementRef: ElementRef
) {
this.elementRef = elementRef;
this.ngOnInit();
this.fileUpload = new FormGroup({
color: this.color
});
this.fileName = new FormGroup({
fileNameInput: this.fileNameInput
});
this.settingsName = new FormGroup({
settingsNameInput: this.settingsNameInput
});
}
ngOnInit() {
this.getDeviceData();
this.getZoneData();
}
}
ブラウザコンソールにエラーが発生しましたか。これはタイミングの問題のように聞こえる。 'getDeviceData()'と 'getZoneData()'は何をしていますか?コンストラクタや 'ngOnInit()'からそれらを呼び出すことで大きな違いはありません。 –
コンストラクタから 'ngOnInit()'を呼び出すと、 'this.getDeviceData(); this.getZoneData();'が2回実行されます。コンストラクタから 'ngOnInit()'を呼び出す代わりに、このコードをコンストラクタに依存するのであれば、このコードをコンストラクタに移動する方が良いでしょう。 –
getDeviceData()、getZoneData()はhttpサービス – Emerceen