Angular 警告 "Warning:Can't resolve all parameters..."

Angular warning "Warning:Can't resolve all parameters..."

我有一个 Ionic / Angular 应用程序,我刚刚更新到 Ionic 3 / Angular 4. 我有几个用于我的页面的基础 classes ...

@Injectable()
export abstract class BasePage {
  constructor(
   userMessageService: UserMessageService,
   logger: Logger,
   translate: TranslateService,    
   derivedClassName: string,    
 ) {
   super(userMessageService, logger, translate, derivedClassName);
   this.data = new Array<T>();
 }

升级后,我现在收到以下警告..

Warning: Can't resolve all parameters for PageBase in D:/dev/myapp/src/pages/page-base.ts: ([object Object], [object Object], [object Object], ?). This will become an error in Angular v5.x

Warning: Can't resolve all parameters for CardPageBase in D:/dev/myapp/src/pages/card-page-base.ts: ([object Object], [object Object], [object Object], ?). This will become an error in Angular v5.x

所以它似乎不喜欢 string 论点。我只用它来做一些日志记录,我只是将它传递到我实例化从这个派生的 class 的地方..

例如super(userMessageService, logger, translate, 'MyPage');

有谁知道为什么这看起来不可能,还有我现在如何传递这样的参数(希望不需要单独的 setter 初始化方法)

在此先感谢您的帮助!

找到我的问题。我认为您需要在基础页面 class 上添加一个 @Injectable(),例如..

    @Injectable()
    export abstract class BasePage {
      constructor(protected name : string, messageProvider : MyServiceProvider) {
        console.log("Baseclass calls " + messageProvider.getMessage());
      }
    }

当我删除它时,一切仍然正常,错误也消失了。我应该在原始问题中包含 class def(我现在将添加)