我正在尝试使用 Angular 团队当前推荐的方法将路由参数从父组件传递到子组件:https://angular.io/docs/ts/latest/cookbook/component-communication.html#!#bidirection-service https://angular.io/docs/ts/latest/cookbook/component-communication.html#!#bidirectional-service
父级能够成功订阅正确发出的服务。然而,当页面加载时,子进程不会收到任何东西。
Service
@Injectable()
export class AbcService {
public paramSource: Subject<any> = new Subject<any>();
public getParams(params) {
this.paramSource.next(params);
}
}
Parent
import { Component } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { AbcService } from './abc.service';
@Component({
providers: [AbcService],
...,
})
export class AbcComponent {
constructor(
private route: ActivatedRoute,
private abcService: AbcService,
) {
route.params.subscribe(
(params) => abcService.getParams(params);
);
}
}
Child
export class AbcChildComponent {
constructor(private abcService: AbcService) {
abcService.paramSource.subscribe((params) => {
console.log(params);
});
}
}
我认为代码是正确的,但事件丢失了。当您下次打电话时,没有人在听主题。一种方法是使用ReplaySubject
另一个是调用下一个ngAfterViewInit
打回来。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)