1

@Hostデコレータが view-components から切り離されてどのように機能するかを理解しようとしています。そこで、次のインジェクター ツリーを作成しました。

class Dependency {
}

@Injectable()
class NeedsDependency {
  constructor(@Host() public dependency: Dependency) {
    console.log(this.dependency); // outputs 'A', but I expected the error
  }
}

const parent = ReflectiveInjector.resolveAndCreate([{provide: Dependency, useValue: 'A'}]);
const child = parent.resolveAndCreateChild([]);
const grandchild = child.resolveAndCreateChild([NeedsDependency]);
grandchild.get(NeedsDependency);

私が理解しているように、grandchildインジェクターのホストはchildであり、インジェクターには何もDependency提供されていないため、エラーが発生することが予想されましたchild。ただし、このコードを実行すると'A'、ルート インジェクターからインジェクトされます。なんで?

4

2 に答える 2