我正在使用angular4来开发我的前端部分。我有一个服务,它返回我想要在其中订阅的observable。因此,如何在加载后更改组件的属性订阅方法中的数据,甚至在ngOnInit方法之后仍保留,并且不会返回到默认值。 这是我的组件代码:在订阅方法中更改组件的属性
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);
}
}
这是getUserList方法
getUserList(){
//this method is returning the items
return this.http.get(this.usersUrl)
.map(res => {
this.users=res['items'];
return this.users;
});
}
如果你展示你如何从你的服务中发布Observable的值,将代码显示在getUserList()方法上会很有用! –
我已经更新了帖子 – fbm