Javascript 角度2,ngOnChanges,NgonCheck

Javascript 角度2,ngOnChanges,NgonCheck,javascript,angular,angular2-template,lifecycle,Javascript,Angular,Angular2 Template,Lifecycle,大家好,我带着很多想法来到你们这里,我想谈谈一些我无法理解的事情 简单服务研究 我们这里有一个由组件触发的服务 这是一个简单的服务,在触发可观察元素时提交该元素: return this.subject.asObservable(); 然后我们有一个组件可以得到: this.alertService.getMessage().subscribe(message => { this.message = message; }); 直到现在一切都很好。 此逻辑包含在组件中,其选择器名称为 嵌

大家好,我带着很多想法来到你们这里,我想谈谈一些我无法理解的事情

简单服务研究 我们这里有一个由组件触发的服务

这是一个简单的服务,在触发可观察元素时提交该元素:

return this.subject.asObservable();
然后我们有一个组件可以得到:

this.alertService.getMessage().subscribe(message => { this.message = message; });
直到现在一切都很好。 此逻辑包含在组件中,其选择器名称为

嵌套组件 这里我们有另一个组件,这个

其他测试
  • 我已尝试将此服务直接包含到容器中(相同 (问题)

  • 我已使用带有
    ngOnChanges工作(另一个解决方案,但看起来更像我正在避免的) 我的问题不仅仅是找到解决方案)

我知道你们都很棒,所以如果你们知道应该以“正确的方式”做什么的话


祝你有一个美好的一天

您是否尝试过移动

this.alertService.getMessage().subscribe(message => { this.message = message; });
订阅父容器,然后通过

<alert [message]=message></alert>


通过这种方式,您还可以在subscribe函数中包含一些逻辑来更改页面导航容器的显示标志布尔值,因此我发现这里的结果看起来很棒

@ViewChild(AlertComponent) AlertComponent: AlertComponent; 

.... 

ngAfterContentChecked () {
  this.alert = (this.AlertComponent.message) ? true : false;
}

简单地说,它不需要改变逻辑,而且它与ngDocheck()相比不会失去任何性能,它有10000个测试…

我会尝试一下。一旦我尝试了,即使它工作了,它也会打破我希望从父组件以外的其他组件下订单这一事实背后的逻辑,但是我找到了解决方案(我觉得这样更好,我已经更新了我原来的帖子)
this.alertService.getMessage().subscribe(message => { this.message = message; });
<alert [message]=message></alert>
@ViewChild(AlertComponent) AlertComponent: AlertComponent; 

.... 

ngAfterContentChecked () {
  this.alert = (this.AlertComponent.message) ? true : false;
}