使用 Injector Class 代替 ReflectiveInjector class
Using Injector Class in place of ReflectiveInjector class
我正在尝试动态加载 angular 中的数据。在我的方法中,我使用了以下代码来加载数据 -
const inputProviders = Object.keys(data.inputs).map(inputName => {
return { provide: inputName, useValue: data.inputs[inputName] };
});
const resolvedInputs = ReflectiveInjector.resolve(inputProviders);
const injector = ReflectiveInjector.fromResolvedProviders(
resolvedInputs,
this.cardComponent.parentInjector
);
const componentType = this.content.resolve(data.component);
const factory = this.resolver.resolveComponentFactory(componentType);
const component = factory.create(injector);
this.cardComponent.insert(component.hostView);
Lint 指出 ReflectiveInjector 将被贬低。我应该如何使用 Injector 才能使我当前的代码正常工作。
我尝试了以下页面中提到的方法,但它没有说明 resolve() 和 fromResolvedProviders() 方法。
我找到了答案。以下是我使用的代码 -
const inputProviders = Object.keys(data.inputs).map(inputName => {
return { provide: inputName, useValue: data.inputs[inputName] };
});
const injector = Injector.create(
{ providers: inputProviders,
parent : this.cardComponent.parentInjector
});
const componentType = this.content.resolve(data.component);
const factory = this.resolver.resolveComponentFactory(componentType);
const component = factory.create(injector);
this.cardComponent.insert(component.hostView);
我正在尝试动态加载 angular 中的数据。在我的方法中,我使用了以下代码来加载数据 -
const inputProviders = Object.keys(data.inputs).map(inputName => {
return { provide: inputName, useValue: data.inputs[inputName] };
});
const resolvedInputs = ReflectiveInjector.resolve(inputProviders);
const injector = ReflectiveInjector.fromResolvedProviders(
resolvedInputs,
this.cardComponent.parentInjector
);
const componentType = this.content.resolve(data.component);
const factory = this.resolver.resolveComponentFactory(componentType);
const component = factory.create(injector);
this.cardComponent.insert(component.hostView);
Lint 指出 ReflectiveInjector 将被贬低。我应该如何使用 Injector 才能使我当前的代码正常工作。 我尝试了以下页面中提到的方法,但它没有说明 resolve() 和 fromResolvedProviders() 方法。
我找到了答案。以下是我使用的代码 -
const inputProviders = Object.keys(data.inputs).map(inputName => {
return { provide: inputName, useValue: data.inputs[inputName] };
});
const injector = Injector.create(
{ providers: inputProviders,
parent : this.cardComponent.parentInjector
});
const componentType = this.content.resolve(data.component);
const factory = this.resolver.resolveComponentFactory(componentType);
const component = factory.create(injector);
this.cardComponent.insert(component.hostView);