【发布时间】:2016-05-31 18:22:27
【问题描述】:
我有一个HomeCmp 和Shared Service。
查看shared service 的构造函数。我手动设置了“Guest”字符串并尝试发出UserModel object。但它没有收到HomeCmp 的ngOnInit 中的对象。
如果您单击该按钮,它将起作用。有什么建议吗?
当我通过EventEmitter 运行应用程序时,如何显示Guest 字符串。
service.ts
import {EventEmitter} from 'angular2/core';
import {UserModel} from 'app/models';
export class NavService {
user:EventEmitter<UserModel>=new EventEmitter();
constructor() {
console.log('constructor')
userDetail=new UserModel();
userDetail.name="guest";
userDetail.loggedIn=false;
console.log(userDetail);
this.user.emit(userDetail);
}
ngOnInit(){ // just wanted to check if it could help or not. I know it belongs to Component's life cycle.
console.log('onit')
}
setUserDetail(str)
{
console.log('SetUserDetail started');
userDetail.name=str;
userDetail.loggedIn=true;
this.user.emit(userDetail);
}
getUserDetail()
{
return this.user;
}
}
Homecmp.ts
import {Component} from 'angular2/core';
import {NavService} from '../services/NavService';
import {UserModel} from 'app/models';
@Component({
selector: 'my-app',
template: `<div>User object:</div>
{{userData|json}}
<button (click)="setuser()">Click</button>
`
})
export class HomeCmp {
constructor(authService:NavService){
this.authService=authService;
}
setuser()
{
this.authService.setUserDetail("micronyks");
}
ngOnInit(){
console.log('here is userInfo');
this.subscription = this.authService.getUserDetail()
.subscribe((item) => {this.userData=item;
console.log('Finally i m working');
console.log(this.userInfo);
});
}
ngOnDestroy() {
}
}
models.ts
export class UserModel()
{
private name:string;
private loggedIn:boolean=false;
}
【问题讨论】:
标签: angular eventemitter