Sai*_*ouk 6 angular2-routing angular2-services ngcomponentrouter angular2-components angular
我有一个使用角度2的设计,其中所有其他组件加载的标题组件,导航栏组件和主体组件.如下图所示
所以基本上,在标题组件中,我想显示当前状态.并且在当前状态的底部,我想显示用户的先前状态.
问题:为了实现这一点,我在角度中使用了组件交互技术.
重新加载应用后,它会显示当前和
后退状态的默认值.
在用户直接登陆到正文中的子组件的特定页面的场景中,它显示当前和后退状态的默认值.
由于angular遵循组件架构,因此我想要一种更好的方法来实现此功能.
如果我直接进入图片中第3部分的子组件,我的标题组件应根据标题组件中的特定页面获取标题/当前状态.
当ngOnInit I传递当前状态值时,我的解决方案是在每个组件中.我也解析以前的状态值.因此,标头组件显示它,因为服务是使用此链接中的技术编写的 - https://angular.io/docs/ts/latest/cookbook/component-communication.html
但是有些情况下我从服务器获取数据并且必须更新标头当前状态.在那里,我看到根本没有显示.
需要帮助以获得良好的解决方案
PS - 由于这种机制在不同的文件中,并且有点复杂,我无法更新代码模板
虽然看起来很简单,但是可以使用子组件和输入、输出变量来实现。
用于显示服务内容的子组件
@Component({
selector: 'title',
template: `
<div> {{title}}</div>
`,
})
export class TitleComponent implements ngOnChanges{
@Input() title:string="";
@Output() titleChanged:EventEmitter<string>=new EventEmitter<string>();
constructor(){
//service call goes here
}
ngOnChanges(){
console.log(this.val);
this.titleChanged.emit(this.title);
}
}
Run Code Online (Sandbox Code Playgroud)
父组件将是
@Component({
selector: 'my-app',
template: `
<div>
<h2>Hello {{name}}</h2>
<title (titleChanged)="changedTitle($event)" [title]="title"></title>
</div>
`,
})
export class App {
name:string;
title:string="some title";
val:string;
constructor() {
this.val="";
}
changedTitle(va;){
this.title="val"
console.log(val);
}
}
Run Code Online (Sandbox Code Playgroud)
解释:
注意:为了表明这是有效的,我使用了一个文本框并将其分配给 div 元素,您可以在路由组件的构造函数中修改它。
| 归档时间: |
|
| 查看次数: |
5120 次 |
| 最近记录: |