注入されたサービスのルートからパラメーターを取得するために、ActivatedRoute を使用しています。アプリ モジュールまたはアプリ コンポーネントでサービスをプロバイダーとして指定すると、呼び出されたときにパラメーター マップが空になります。サービスをプルするコンポーネントでプロバイダーとして指定すると、パラメーターがあります。
なぜこれがこのように機能するのですか。ActivatedRoute がどのようにスコープされ、どのようにサービスと対話するかについて、適切な情報を見つけるのに苦労しました。
plnkr でこの動作にリンクします。a.component.ts の 11 行目 (providers フィールド) のコメントを外して、私をクリックしたときに動作することを確認してください! https://plnkr.co/edit/3U9dZm9fdUlG6KW3GyoQ
import {Component, OnInit} from '@angular/core'
import {AService} from './a.service.ts'
@Component({
selector: 'app-a',
template: `
<div>
<h2>Hello {{id}}</h2>
</div>
`,
// providers: [AService]
})
export class AComponent implements OnInit {
id: string;
constructor(private aService: AService) {
}
ngOnInit() {
this.id = this.aService.getId();
}
}