繁体   English   中英

角度材料2-切换路线时如何保持选择垫选项?

[英]Angular material 2 - How to keep mat-option selected when switching routes?

我尝试使用ngOnChanges来保留先前选择的选项,当我在选择一个值后切换开时,然后返回上一条路由,但是所选的选项默认返回无。 如何在切换路由之间跟踪最近选择的选项?

这是我的代码:

选择视图:

<mat-select placeholder="Choose a pair" [(ngModel)]="selectedValue" 
  (ngModelChange)="emit($event)">
  <mat-option>--None--</mat-option>
  <mat-option *ngFor="let token of tokens" [value]="token.id">
    {{token.name}}
  </mat-option>        
</mat-select>

<a *ngFor="let token of tokens" [routerLink]="['/tokens/', token.id]">
  <span *ngIf="selectedValue===token.id">
    More about {{token.name}}
  </span>          
</a>

选择组件:

selectedValue: any;
tokens: any;

  constructor(
    private apiService: ApiService,
    private sharedService: SharedService
  ) {
  }

  ngOnInit() {
    this.loadTokens();
  }

  ngOnChanges() {
    if (this.selectedValue) {
      this.selectedValue = this.tokens.find(i => i.id === this.selectedValue.id
        && i.name === this.selectedValue.name);
    }
  }

  emit(selectedValue) {
    this.sharedService.pair.next(selectedValue);
  }

  loadTokens() {
    this.apiService.getTokens()
    .subscribe((data: any) => {
      this.tokens = data;
    }, error => {
      console.log(error);
    });
  }

当您离开时,您的组件将被破坏。 这意味着您拥有的任何变量都会被销毁。

为了保持价值,您可以使用服务或本地/会话存储。

(我建议使用服务,但这是我个人的看法)。

顺便说一句, ngOnChanges仅与Inputs( @Input )一起使用,我非常怀疑您是否将在路由组件中包含输入。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM