我有一项服务,我已经设置了一个流。
import {Injectable} from '@angular/core'
import {Subject} from 'rxjs/Subject';
import { Column } from './../../column.model';
@Injectable()
export class ColumnService {
selectedColumnInstance:Column = new Column();
// Observable selectColumn source
private selectColumnSource = new Subject<Column>();
// Observable selectColumn stream
selectColumn$ = this.selectColumnSource.asObservable();
// service command
selectColumn(column:Column) {
console.log(column);
this.selectedColumnInstance=column;
this.selectColumnSource.next(column);
}
}
我将此流更新为:
this.rapidColumnService.selectColumn(this.selectedCol); //selectedCol is new value
现在我有一个组件可以加载它的childComponent,如果这个columnStream有任何值:
designer.component.html
<div class="col-md-3" *ngIf="selectedComponent">
<editor component-name="value-editor" [(model)]="selectedComponent.model"></editor>
</div>
现在在我的designer.component.ts中,我已经在ngOnInit()生命周期钩子中订阅了这个流。
ngOnInit() {
this.subscriptionColumn = this.rapidColumnService.selectColumn$.subscribe(
selectedComponent => {
this.selectedComponent = selectedComponent;
});
}
到目前为止一切顺利,如果我在designerComponent中,那么每次我在服务中更新列时,视图都会发生变化。
但是一旦我重定向到其他组件并再次重定向到设计器,我就无法加载编辑器组件。
我可以看到流在服务中更新。
我想在每次更新流时加载编辑器组件。
是路由器问题吗?
任何输入?
谢谢&amp;问候。