반응형
서비스에 문서를 삽입하는 방법은 무엇입니까?
Angular 2 응용 프로그램이 있습니다. Document
테스트 에서 개체 를 조롱 하기 위해 다음과 같이 서비스에 삽입하고 싶습니다.
import { Document } from '??'
@Injectable()
export class MyService {
constructor(document: Document) {}
}
Title
Angular 의 서비스 는 내부 getDOM()
방법을 사용합니다 .
Document
서비스에 를 삽입하는 간단한 방법이 있습니까? 또한 providers
배열 에서 어떻게 참조해야 합니까?
이것은 오랫동안 Angular에서 직접 지원됩니다.
https://angular.io/api/common/DOCUMENT
my-service.ts :
import { Inject, Injectable } from '@angular/core';
import { DOCUMENT } from '@angular/common';
@Injectable()
export class MyService {
constructor(@Inject(DOCUMENT) private document: Document) {}
}
my-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
]));
...
});
나는 adamdport의 질문에 대해 직접적으로 언급 할 수는 없지만 (아직 50 개의 rep 포인트가 아님) 각도 문서에 명시된 바와 같다.
인용구 @ GünterZöchbauer DOCUMENT가 더 이상 사용되지 않는 것 같습니다. 일단 사라지면 어떻게 할 수 있는지 아십니까? 예를 들어 파비콘을 어떻게 동적으로 설정합니까?
다음과 같이 플랫폼 브라우저에서 가져 오는 대신 :
import { DOCUMENT } from '@angular/platform-browser';
각도 공통에서 가져 오기 :
import {DOCUMENT} from '@angular/common';
@ Günter Zöchbauer의 답변 외에도.
Angular는 DOCUMENT를 InjectionToken으로 정의합니다.
export const DOCUMENT = new InjectionToken<Document>('DocumentToken');
그리고 browser.ts의 문서와 함께 삽입하십시오.
{provide: DOCUMENT, useFactory: _document, deps: []}
export function _document(): any {
return document;
}
따라서 우리가 그것을 사용할 때 우리는 @Inject(DOCUMENT)
또는 토큰을 직접 사용 deps:[DOCUMENT]
참조 URL : https://stackoverflow.com/questions/37521298/how-to-inject-document-in-service
반응형
'programing' 카테고리의 다른 글
Git에서 브랜치 이름을 어떻게 검색합니까? (0) | 2021.01.17 |
---|---|
Android Studio-보안 예외 경고 제거 (0) | 2021.01.17 |
창이 최대화 / 최대화 해제되는 이벤트 (0) | 2021.01.17 |
String. 소수 자리없이 천 단위 구분 기호를 사용하거나 작은 정수의 경우 선행 0을 사용하도록 정수 형식 지정 (0) | 2021.01.17 |
무한 매개 변수로 메소드를 만드시나요? (0) | 2021.01.17 |