2017-01-02 4 views
0

Я пытаюсь создать класс, который встроен в JavaScript, инъецируемый в приложение Angular 2. Для моего конкретного случая использования я пытаюсь ввести экземпляр AudioContext. Я попытался сделать это инъекционный следующие 4 пути, но ни один из них не работаетInject встроенный класс JavaScript в Angular 2

@NgModule({ 
    providers: [ 
     AudioContext 
     //{provide: AudioContext, useClass: AudioContext} 
     //{provide: AudioContext, useValue: new AudioContext()} 
     //{provide: AudioContext, useFactory:() => new AudioContext()} 
    ] 
}) 

export class AppModule { 

} 

Я получаю ошибку

ошибка, обнаруженная разрешающую значения символов статически. Могу не Решимость типа AudioContext (позиция 13:39 в исходном файле .ts)

Как я могу сделать экземпляр AudioContext вводимым через мое приложение без упаковки его в таможенной службе?

+0

Вы используете AOT? –

+0

Да, я использую AOT – rob

+0

Думаю, вам нужно сделать что-то совершенно произвольно глупо, например создать файл типа audio-context.ts' с содержимым типа 'export const audioContext = new AudioContext();', а затем импортировать его в свой модуль. –

ответ

0

Аудиоконтент доступен в глобальном объекте окна, вводит объект окна в качестве поставщика.

var AudioContext = window.AudioContext || window.webkitAudioContext;

Angular2 - How to inject window into an angular2 service

Тогда вы можете получить доступ к AudioContext через нагнетаемой объекта Window.

+0

Я хочу добавить экземпляр AudioContext, а не класс – rob

+0

Не вводите окно, которое является ужасной идеей. –

+0

@AluanHaddad Внедрение окна - это не страшная идея, используя глобальный объект и привязывая к нему все. У вас есть разногласия. Rob создайте поставщика, который затем обертывает AudioContext и устанавливает его как поставщика. –

Смежные вопросы