J'ai un formulaire pour le composant ng-select, qui montre les rôles d'un utilisateur, dans mon projet Angular 4. Dans ce composant, je dois d'abord obtenir les rôles de l'utilisateur et les montrer comme valeurs par défaut. Pour être en mesure de le faire, j'utilise FormControls dans ngOnInit. Comme j'obtiens les valeurs par défaut d'un service, elles se chargent si lentement en fonction de l'initialisation de FormGroup. Je les appelle tous les deux dans ngOnInit mais chaque fois que le FormGroup s'exécute avant. Je ne vois donc aucune des valeurs par défaut à l'écran. J'ai essayé de le faire asynchrone mais je ne pouvais pas le faire.Angular 4 ng-select Dynamic Valeurs par défaut
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;
}
}
}
Il dit, obtenir est indéfini. J'ai essayé plusieurs choses pour définir une valeur de contrôle mais le programme se bloque et dit que la chose que j'ai écrite n'est pas définie. – esdoodle
@esdoodle j'ai édité mon. J'espère que cela aidera. – fastAsTortoise