Как закачать документ в услугу «Угловая 2»

У меня есть приложение Angular2. Чтобы издеваться над объектом Document в тестах, я хотел бы добавить его в службу, например:

 import { Document } from '??' @Injectable() export class MyService { constructor(document: Document) {} } 

Служба Title углового использует внутренний getDOM() :

https://github.com/angular/angular/blob/master/modules/%40angular/platform-browser/src/browser/title.ts

Есть ли простой способ вставить документ в службу? Кроме того, как я должен ссылаться на массив поставщиков?

Это поддерживается в Angular через некоторое время

https://angular.io/api/common/DOCUMENT

мой-service.ts:

 import { Inject, Injectable } from '@angular/core'; import { DOCUMENT } from '@angular/common'; @Injectable() export class MyService { constructor(@Inject(DOCUMENT) private document: any) {} } 

мой-service.spec.ts

 import { provide } from '@angular/core'; import { DOCUMENT } from '@angular/common'; import { MyService } from './my-service'; class MockDocument {} describe('MyService', () => { beforeEachProviders(() => ([ provide(DOCUMENT, { useClass: MockDocument }), MyService ])); ... }); 

Я не могу комментировать непосредственно вопрос адампорта (еще не 50 пунктов), но здесь это указано в угловых документах.

Blockquote @ GünterZöchbauer выглядит так, как DOCUMENT устарел. Любая идея, как это сделать, когда она ушла? Например, как я могу настроить favicon динамически?

Вместо импорта из браузера платформы:

 import { DOCUMENT } from '@angular/platform-browser'; 

Импортируйте его из углового общего:

 import {DOCUMENT} from '@angular/common'; 

в дополнение к ответу Гюнтера Цохбауэра.

Угловое определение DOCUMENT как InjectionToken

 export const DOCUMENT = new InjectionToken('DocumentToken'); 

dom_tokens.ts

И добавьте его в document.ts

 {provide: DOCUMENT, useFactory: _document, deps: []} export function _document(): any { return document; } 

Поэтому, когда мы его используем, нам просто нужно ввести @Inject(DOCUMENT)

или используйте токен непосредственно в deps:[DOCUMENT]

  • Angular 4 - обновить метаtags динамически для Facebook (Открыть график)
  • Как обновить / обновить с углового 4 до углового 5+
  • Angularjs, проходящий между маршрутами
  • Угловое - каковы значения module.id в компоненте?
  • Угловой: не удается найти отличающийся поддерживающий объект «объект объекта»
  • Как передавать данные между отдельными компонентами без использования $ scope?
  • Угловой HTTP GET с ошибкой TypeScript http.get (...) .map не является функцией в
  • Угловой массив объектов для изменения данных
  • Угловые 2 кэша наблюдаемых данных результата http
  • Angular2 - компонент в динамически созданный элемент
  • Как загрузить динамические внешние компоненты в угловое приложение
  • Давайте будем гением компьютера.