【发布时间】:2020-06-06 10:52:33
【问题描述】:
我是初学者。我找不到任何办法。我尝试使用在我创建的服务中创建的行为主题。 behaviorSubject 从父组件获取下一个值(this.service.behaviorsub.next(value to pass to child))
然后在子组件中调用 service.behaviorsub,我使用 subscribe 来获取数据。但是当我尝试控制台记录该数据时,我得到了不确定。
要么有更好的方式将数据从父级传递给子级(通过路由器出口调用),要么有更好的方式来使用 behaviorSubject。
提前致谢!
代码示例: ->父母 html
<div class="container" *ngIf="outlet.isActivated == false">
<div class="row">
<div class="col" *ngFor="let item of items">
<app-another-component [Item]="item" (click)="should-take-to-another-
component-for-which-there-is-router-outlet()"></app-another-component>
</div>
</div>
<div class="container">
<router-outlet #outlet="outlet"></router-outlet>
</div>
app-another-component 具有某些详细信息,例如标题和图像,单击它们应该会打开另一个仅具有该特定标题和图像的组件(并且此标题不会显示为查询参数)。
对于行为主体: 在服务文件中:
behavior: new BehaviorSubject<type>(value);
在父文件中:
should-take-to-another-component-for-which-there-is-router-outlet(data:type){
this.service.behavior.next(data);
}
在文件中(这是孙子,但通过路由,它只打开这个文件)
ngOnInIt(){
this.service.behavior.subscribe((data) => {
console.log(data)
}
这里记录的数据显示未定义
【问题讨论】:
-
你能贴一些代码吗?
-
请提供代码示例
-
使用 BehaviourSubject 是一个很好的方法,您也可以发布与此相关的代码
-
您可以在角度路由中检查解析器,它可能会对您有所帮助。
标签: angular router-outlet