Угловое предупреждение " предупреждение:не удается разрешить все параметры…"


У меня есть приложение Ionic / Angular, которое я только что обновил до Ionic 3 / Angular 4. У меня есть несколько базовых классов, которые я использую для своих страниц...

@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. Все, что я использую это для некоторого ведения журнала, и я просто передаю его туда, где я создаю экземпляр класса, производного от этого..

Например super(userMessageService, logger, translate, 'MyPage');

Кто-нибудь знает, почему это выглядит так, что это не будет возможно, а также как я могу теперь передать такой аргумент (надеюсь, без необходимости иметь отдельный сеттер метода init)

Заранее спасибо за любую помощь!

1 2

1 ответ:

Нашел свою проблему. Я думал, что вам нужен @Injectable() на базовой странице класса, например..

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

Когда я удалил это, все еще работало нормально, и ошибки исчезли. Я должен был включить класс def в исходный вопрос (который я сейчас добавлю)