2

ngrx/routerを使用しています。

開くhttp://localhost/set-new-password/abcと、RouteParamsうまくいきます。token欲しい弦が手に入る。

const landingRouter: Routes = [
  { path: '/set-new-password/:token', component: SetNewPasswordComponent },
];

export class SetNewPasswordComponent implements OnInit {
  token: string = '';

  constructor(private _routeParams$: RouteParams) {}

  ngOnInit()
  {
    this._routeParams$
      .pluck('token')
      .subscribe(token => {
        console.log(typeof token); // Console: "string"
        console.log(token);        // Console: "abc"
        this.token = token;        // Terminal: Type '{}' is not assignable to type 'string'.
      });
  }
}

ただし、端末で次の警告が表示されました。

タイプ「{}」はタイプ「string」に割り当てられません。

this.token = String(token);はそれを取り除くために使用できることを知っています。

しかし、なぜこの警告が表示されるのでしょうか? 誰かが私のために少し説明できますか? ありがとう

4

1 に答える 1

5

@brandonroberts から @MikeRyan52 の元の回答に助けを求めてください。

これが機能しない理由は 2 つあります。

  1. 実行時まで params オブジェクトの形状は実際にはわからないため、それを記述するのに適した型はありません。

  2. pluck('id') は、文字列セレクターが不明であるため、適切に型指定することはできません

解決策は、pluck() を明示的に入力することです。

params$.pluck<string>('id')

だから私の状況は次のように変化しています:

this._routeParams$
  .pluck<string>('token')
  .subscribe(token => this.token = token);
于 2016-06-04T18:48:32.073 に答える