【发布时间】:2016-09-09 21:43:19
【问题描述】:
我想要两个具有 2 条不同路由的不同组件,我想将信息从组件 A 传递到组件 B。
我做了以下事情:
- 创建处理事件的服务
- 在componentA设置信息并传递给Service事件
- 尝试在组件 B 处获取此信息
我的服务:
@Injectable()
export class TokenService{
private tokenSource = new Subject<Object>();
token$ = this.tokenSource.asObservable();
setToken(token: string) {
this.tokenSource.next(token);
}
组件A:
@Component({
selector: 'login',
templateUrl: './login.html',
providers: [TokenService],
moduleId: module.id
})
export class LoginCmp {
constructor(private tokenService: TokenService) {
}
someMethod() {
this.tokenService.setToken('some dynamic value');
}
....
组件B:
@Component({
selector: 'cabecalho',
moduleId: module.id,
templateUrl: './cabecalho.html',
providers: [TokenService]
})
constructor(private tokenService: TokenService) {
tokenService.token$.subscribe(
data => {
console.log(data);
});
}
当我从 ComponentA 设置一些信息时,我的控制台从不打印我在 ComponentB 中使用console.log(data) 放置的内容
【问题讨论】:
-
两个组件在同一个 NgModule 中吗?尝试在我们的 NgModule 中注册服务,而不是在两个组件中使用
providers数组。 -
@candidJ RC1 没有 NgModule
-
不会出现错误吗?我建议你更新到
rc6
标签: events angular observable angular2-services