programing

서비스 중인 Document를 주입하는 방법은 무엇입니까?

cafebook 2023. 10. 10. 20:57
반응형

서비스 중인 Document를 주입하는 방법은 무엇입니까?

저는 Angular 2 어플이 있습니다.조롱해서.Document테스트 중인 객체, 다음과 같이 서비스에 주입하고 싶습니다.

import { Document } from '??' 

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

TitleAngular의 service는 내부 방식을 사용합니다.

간단한 주사 방법이 없을까요?Document서비스를 위해?또한, 제가 그것을 어떻게 참조해야 할까요?providers배열?

이는 Angular에서 한동안 지원해 왔습니다.

에서 제공하는 상수를 사용할 수 있습니다.@angular/common꾸러미의

에 대한 설명DOCUMENTconstant(API 설명서에서 가져온):

기본 렌더링 컨텍스트를 나타내는 DI Token.브라우저에서 이것은 DOM 문서입니다.

예는 다음과 같습니다.

내 부역의service.ts:

import { Inject, Injectable } from '@angular/core';
import { DOCUMENT } from '@angular/common';

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

내 부역의서비스.스펙츠

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
  ]));

  ...
});

저는 addport의 질문(아직 50개의 응답 포인트는 아님)에 대해 직접적으로 언급할 수는 없지만, 여기 각진 문서에 명시된 것과 같습니다.

Blockquote @GünterZöchbauer 도큐먼트가 더 이상 사용되지 않는 것 같습니다.이것이 없어진 후에 어떻게 해야 하는지 아십니까?예를 들어, 파비콘을 동적으로 설정하려면 어떻게 해야 합니까?

플랫폼 브라우저에서 이와 같이 가져오는 대신:

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

각도 공통에서 가져오기:

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

@Gunter Zöchbauer의 답변 외에.

각도 정의 도큐먼트를 주입으로 정의합니다.상품권

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]

import { Inject, Injectable } from '@angular/core';
import { DOCUMENT } from '@angular/common';

@Injectable()
export class MyService {
  constructor(@Inject(DOCUMENT) private document) {}
}

문제의 원인은 ": 문서"입니다.

언급URL : https://stackoverflow.com/questions/37521298/how-to-inject-document-in-service

반응형