programing

서비스에 문서를 삽입하는 방법은 무엇입니까?

yoursource 2021. 1. 17. 12:27
반응형

서비스에 문서를 삽입하는 방법은 무엇입니까?


Angular 2 응용 프로그램이 있습니다. Document테스트 에서 개체 를 조롱 하기 위해 다음과 같이 서비스에 삽입하고 싶습니다.

import { Document } from '??' 

@Injectable()
export class MyService {
  constructor(document: Document) {}
}

TitleAngular 서비스 는 내부 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');

dom_tokens.ts

그리고 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

반응형