Angular 4プロジェクトで、ユーザーの役割を示すng-selectコンポーネントのフォームがあります。そのコンポーネントでは、まずユーザーの役割を取得し、それらをデフォルト値として表示する必要があります。それを可能にするために、私はngOnInitでFormControlsを使用しています。私はサービスからデフォルト値を取得するので、FormGroupの初期化に応じて遅くロードしています。私はngOnInitの両方で呼び出していますが、FormGroupが実行されるたびに呼び出されます。だから私は画面上のデフォルト値のいずれかを見ることができません。私は非同期にしようとしましたが、できませんでした。角度4 ng-select動的デフォルト値
ngOnInit() {
this.sub = this.route.params.subscribe(params => {
this.userTC = params['id'];
this.getUserInfo(this.userTC); // This function works second
});
// This part works first
this.form = new FormGroup({
roles: new FormControl(this.defaultRoles)
});
}
getUserInfo(tc) {
this.userService.getUser(tc).subscribe(data => {
if(data) {
let arr = new Array<string>();
for(i = 0; i < data.roles.length; i++) {
switch(data.roles[i]) {
case "admin" :
arr[i] = '1';
break;
case "doktor" :
arr[i] = '2';
break;
case "hasta" :
arr[i] = '3';
break;
case "lab" :
arr[i] = "4";
break;
}
}
this.defaultRoles = arr;
}
}
}
代わりに、コンストラクタでそれを定義してみてください代わりに
今ngOnInit
を使用しての...そうのような配列で渡す
@Input
を使用してみてください。私は制御値を設定するためにいくつかのことを試しましたが、プログラムがクラッシュし、私が書いたことは未定義であると言います。 – esdoodle@esdoodle私は私を編集しました。これが役立つことを願っています。 – fastAsTortoise