Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Angular 6 custom lib没有ComponentFactoryResolver的提供程序大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我从NG4重写了库 – > NG6(使用angular-cli 6).这个lib改变了dynamicli角度组件,所以我使用COR_497_11845@ponentFactoryResolver,在这里我卡住了.当我将ComponentFactoryResolver添加到构造函数时:

constructor(
    private componentFactoryResolver: ComponentFactoryResolver
) {}

并在目标应用程序中构建lib(成功)(我在本文件添加我的lib.json中的lib)我有这样的错误

StaticInjectorError(AppModulE)[MyLibComponent-> ComponentFactoryResolver]: 
  StaticInjectorError(Platform: corE)[MyLibComponent-> ComponentFactoryResolver]: 
    NullInjectorError: No provider for ComponentFactoryResolver!
    at NullInjector.push../node_modules/@angular/core/fesm5/core.js.NullInjector.get (core.js:979)
    at resolveToken (core.js:1232)
    at tryResolveToken (core.js:1182)
    at StaticInjector.push../node_modules/@angular/core/fesm5/core.js.StaticInjector.get (core.js:1077)
    at resolveToken (core.js:1232)
    at tryResolveToken (core.js:1182)
    at StaticInjector.push../node_modules/@angular/core/fesm5/core.js.StaticInjector.get (core.js:1077)
    at resolveNgModuleDep (core.js:9238)
    at NgModuleRef_.push../node_modules/@angular/core/fesm5/core.js.NgModuleRef_.get (core.js:9919)

没有ComponentFactoryResolver,其他工作正常

完整组件:

import { Component,ComponentFactoryResolver,AfterContenTinit,ViewChild,Inject,Input,InjectionToken } from '@angular/core';

import { AbHostDirective } from './../directives/ab-host.directive';

export const AB_COMPONENTS = new InjectionToken('AB_COMPONENTS');

@Component({
  SELEctor: 'lib-ab',template: `<ng-template lib-ab-host></ng-template>`,styles: []
})

export class MyLibComponent implements AfterContenTinit {
  @ViewChild(AbHostDirectivE) abHost: AbHostDirective;
  @input() globalConfiguration: any;
  @input() domain = '';

  constructor(
    @Inject(AB_COMPONENTS) private $configuredComponents: any,private componentFactoryResolver: ComponentFactoryResolver
  ) {}

  ngAfterContenTinit() {
    const currentConfiguration = this.$configuredComponents[this.domain];

    if (!currentConfiguration) {
        console.error('No component for: ',+ this.domain);
        return;
    }

    const randomIndex      = Math.floor(Math.random() * currentConfiguration.length);
    const componentFactory = this.componentFactoryResolver.resolveComponentFactory(currentConfiguration[randomIndex]);
    const viewContainerRef = this.abHost.viewContainerRef;
    viewContainerRef.clear();
    const componentRef = viewContainerRef.createComponent(componentFactory);
    const instance     = <any>componentRef.instance;
    instance.globalConfiguration     = this.globalConfiguration;
  }
}

解决方法

我遇到过同样的问题.这个问题解决了我的问题:

https://github.com/angular/angular/issues/20598

尝试将此添加到angular.json文件中:

"build": {
    "options": {
        "preserveSymlinks": true,}
}

大佬总结

以上是大佬教程为你收集整理的Angular 6 custom lib没有ComponentFactoryResolver的提供程序全部内容,希望文章能够帮你解决Angular 6 custom lib没有ComponentFactoryResolver的提供程序所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。