4

注入されたサービスのルートからパラメーターを取得するために、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();
  }
}
4

1 に答える 1