Мы находимся в процессе запуска и запуска Angular в нашем приложении AngularJS, но я столкнулся с проблемой смешивания обновленных и пониженных компонентов.
Вот структура моей текущей проблемы
Самый внешний слой — это наше основное приложение.
Следующий уровень — мой новый компонент Angular, версия которого понижена, чтобы я мог использовать его в части AngularJS своего приложения. (Он загружается в состоянии пользовательского интерфейса).
Последний слой — это компонент AngularJS, который был обновлен для использования в компоненте Angular.
Последний слой — это то, что вызывает проблему. При обновлении (следуя документам на angular.io), он начинает выдавать эту ошибку:
No provider for ElementRef!
Вот несколько фрагментов, которые могут предоставить информацию, необходимую для помощи
Компонент AngularJS:
export const ProductComponent: ng.IComponentOptions = {
template: require('./product.html'),
controller: ProductController,
bindings: {
channel: '<',
datastandardId: '<',
productFamily: '<'
}
};
...
someModule.component('lpProduct', ProductComponent);
Обновлено до углового:
@Directive({
selector: 'lp-product-ng2'
})
export class ProductDirective extends UpgradeComponent implements OnInit {
@Input() productFamily;
@Input() channel;
@Input() datastandardId;
constructor(@Inject('ElementRef') elementRef: ElementRef, @Inject('Injector') injector: Injector) {
super('lpProduct', elementRef, injector);
}
ngOnInit() {
super.ngOnInit();
}
}
@NgModule({
imports: [
...
],
exports: [...],
declarations: [
...,
ProductDirective
],
entryComponents: [...],
providers: [
...
]
})
export class CategoryListViewModule {
}
Компонент AngularJS, используемый в шаблоне компонента Angular
<lp-product-ng2
*ngIf="selectedProduct"
[productFamily]="selectedProduct"
[channel]="channel"
[datastandardId]="datastandardId">
</lp-product-ng2>
*ngIf
разрешается в (click)
другого элемента, поэтому исключение не генерируется до тех пор, пока элемент не окажется в DOM. Если я удалю *ngIf
, сразу же возникнет исключение, но оно возникнет из другой части кода.
Я боюсь, что проблема заключается во вложенности компонентов, но у меня нет доказательств.