J'utilise angular4 pour développer ma partie frontale.J'ai un service qui retourne un observable auquel je veux m'abonner dans mon composant.Alors comment puis-je changer l'attribut du composant après le chargement les données dans la méthode subscribe et rester même après la méthode ngOnInit et ne pas revenir à sa valeur par défaut. Ce est le code de mon composant:changer l'attribut d'un composant dans une méthode d'abonnement
import {CreateUserComponent} from '../create-user/create-user.component';
import {UpdateUsersCredentialsComponent} from '../update-users-credentials/update-users-credentials.component';
import { Component, OnInit, AfterViewInit } from '@angular/core';
import { MdDialog, MdDialogRef, MdDialogConfig } from '@angular/material';
import{UsersListService} from '../shared/users-list.service'
import { User } from 'app/pages/Users/shared/user';
@Component({
selector: 'vr-users-list',
templateUrl: './users-list.component.html',
styleUrls: ['./users-list.component.scss']
})
export class UsersListComponent implements OnInit,AfterViewInit {
private users:any[]=["1","2","3"];
private selectedUser:User;
constructor(public dialog: MdDialog,private userListService: UsersListService) {
}
public get $selectedUser(): User {
return this.selectedUser;
}
public set $selectedUser(value: User) {
this.selectedUser = value;
}
ngOnInit() {
this.userListService.getUserList().subscribe (
data =>{
console.log("those are data "+data.length);
this.users=data;
});
}
ngAfterViewInit(){
this.userListService.getUserList().subscribe (
data =>{
console.log("those are data "+data.length);
this.users=data;
});
}
openUsersDetails() {
let config = new MdDialogConfig();
let dialogRef:MdDialogRef<UpdateUsersCredentialsComponent> = this.dialog.open(UpdateUsersCredentialsComponent, config);
dialogRef.componentInstance.email =this.selectedUser.$email;
}
openCreateUser() {
this.dialog.open(CreateUserComponent);
}
}
c'est la méthode getListeUtilisateurs
getUserList(){
//this method is returning the items
return this.http.get(this.usersUrl)
.map(res => {
this.users=res['items'];
return this.users;
});
}
Il vous sera utile si vous montrez comment vous émettez des valeurs de votre Observable sur votre service, montrez-nous votre code sur la méthode getUserList()! –
J'ai déjà mis à jour le poste – fbm