Angular 2 AOT - свойство «окно» не существует для типа

В моем приложении Angular 2 я предоставляю объект окна, используя то, что описано здесь: Angular2 - Как внедрить окно в службу angular2.

Однако компилятор ngc, используемый для AOT, возвращает несколько ошибок. Сначала мне пришлось изменить способ предоставления зависимости (обратите внимание на «Окно»):

@NgModule({        
  providers: [
    { provide: 'Window',  useValue: window }
  ],
  ...
})
export class AppModule {}

И в моем компоненте (обратите внимание на тип «любой»):

@Component({ ... })
export default class MyComponent {
    constructor (
        @Inject('Window') private window: any
    ) {}
...

Однако я все еще получаю следующую ошибку, выдаваемую компилятором ngc в моем модуле ngfactory:

Свойство «окно» не существует для типа

Опять же, с компилятором tsc все работает нормально.


person j3r6me    schedule 17.11.2016    source источник


Ответы (2)


В конце концов я решил свою проблему, следуя именно тому, что описано здесь: http://juristr.com/blog/2016/09/ng2-get-window-ref/

person j3r6me    schedule 18.11.2016

Следующее простое решение помогло мне:

В разделе "@NgModule" в разделе "провайдеры":

{provide: 'window', useFactory: getWindow }

Обязательно экспортируйте метод «getWindow»:

export function getWindow() { return window; }

Источник — https://github.com/angular/angular/issues/14050

person Yonatan Ayalon    schedule 20.08.2017