Обновление компонента AngularJS до Angular: нет провайдера для исключения ElementRef

Мы находимся в процессе запуска и запуска 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, сразу же возникнет исключение, но оно возникнет из другой части кода.

Я боюсь, что проблема заключается во вложенности компонентов, но у меня нет доказательств.


person Thor Jacobsen    schedule 20.04.2017    source источник


Ответы (1)


должен быть :

@Inject(ElementRef)

и

@Inject(Injector)
person Dariusz    schedule 20.04.2017