在我的可观察流改变angular2之后如何更新视图?

时间:2016-10-06 14:09:04

标签: javascript angular typescript angular2-routing

我有一项服务,我已经设置了一个流。

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;问候。

0 个答案:

没有答案