Angular2 DI-동일한 생성자에서 여러 다른 인스턴스 초기화

RVP

Angular2 DI 질문이 있습니다. 말 나는이 TestService와 나는 같은 구성 요소 내에서이 서비스의 2 개 가지 인스턴스를 사용하고 싶습니다. 컴포넌트에 제공자를 추가하고 생성자에 2 개의 인스턴스를 추가하면 동일한 서비스 인스턴스가됩니다. 예를 들면 :

TestService

import {Injectable} from "@angular/core";

@Injectable()
export class TestService {

    public id: number = Math.random();

    public toString(): string {
        return "Id: " + this.id;
    }
}

테스트 구성 요소

import {Component, Input, OnInit} from "@angular/core";
import {TestService} from "../../services/test.service";

@Component({
    providers: [TestService]
})
export class TestComponent implements OnInit {

    constructor(private _testService1: TestService, private _testService2: TestService) { };

    ngOnInit() {
        console.log("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", this._testService1.toString());
        console.log("BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", this._testService2.toString());
    }
}

콘솔 결과

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Id: 0.24242492129168425
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB Id: 0.24242492129168425

누군가가 Angular2의 DI 메커니즘을 사용하여 동일한 구성 요소 내에 서비스의 여러 인스턴스를 주입하는 방법이 있는지 말해 줄 수 있습니까? 아니면이 특정 경우에 DI를 삭제하고 수동 생성자로 인스턴스를 수동으로 만들어야합니까?

미리 감사드립니다

Günter Zöchbauer

호출 할 때마다 새 인스턴스를 반환하는 팩토리를 삽입 할 수 있습니다.

@NgModule({
   providers: [{
      provide: 'testService', 
      useFactory: (/* TestService deps here like `http`*/) => 
        (/* params */) => new TestService(/* http */), 
      deps: [/* TestService deps here like `Http`*/ ]
    }]
})


@Component(...)
export class TestComponent implements OnInit {

    constructor(@Inject('testService') private _testServiceFactory) { };

    ngOnInit() {
        console.log("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", this._testServiceFactory( /* params */).toString());
        console.log("BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", this._testServiceFactory().toString());
    }
}

Plunker 예제 (버튼을 클릭 할 때 브라우저 콘솔에서 출력 확인)

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

.NET Core에서 다른 생성자 매개 변수 (DI 및 비 DI)를 사용하여 IHostedService의 여러 인스턴스 등록

분류에서Dev

Interface Builder에서 동일한 클래스의 여러 객체를 인스턴스화하면 공유 속성이 생성됩니다.

분류에서Dev

여러 인스턴스에서 일부 속성 값을 확인하고 Python의 동일한 인스턴스에서 다른 속성을 인쇄하십시오.

분류에서Dev

여러 스레드에서 var 인스턴스화 동기화

분류에서Dev

여러 클래스가 다른 클래스의 동일한 인스턴스에 액세스해야합니다.

분류에서Dev

ec2 인스턴스에서 다른 ec2 인스턴스를 스핀 업하고 여기에 csv 파일을 푸시합니다.

분류에서Dev

SQLAlchemy 인스턴스에 대한보다 간결한 초기화

분류에서Dev

동일한 방법을 사용하여 다른 네임 스페이스에서 동일한 개체를 인스턴스화

분류에서Dev

Angular 기반 웹 앱에 대한 다른 JS 파일에서 JS 클래스 인스턴스화

분류에서Dev

생성자 C ++의 다른 클래스에 대한 포인터 초기화

분류에서Dev

컴파일러는 최종 인스턴스 변수가 초기화되지 않았다고 생각합니다.

분류에서Dev

동일한 클래스에서 여러 객체를 인스턴스화 할 때 코드가 실행되지 않지만 동일한 코드를 사용하여 중복 클래스에서 객체를 인스턴스화 할 때 작동합니다.

분류에서Dev

Word 2007에서 동일한 파일의 여러 인스턴스 열기

분류에서Dev

Angular 8 : 동일한 서비스의 여러 인스턴스 사용

분류에서Dev

인수를 사용하여 다른 클래스 생성자에서 개체 초기화

분류에서Dev

다른 클래스에서 private 생성자를 사용하여 개체를 인스턴스화하는 방법

분류에서Dev

Angular 2에서 개체의 여러 다른 주입 된 인스턴스

분류에서Dev

다른 의도 개체에 대해 동일한 활동의 여러 인스턴스

분류에서Dev

case 문으로 인해 다른 열에 채워지는 동일한 ID의 여러 인스턴스

분류에서Dev

여러 select2가 동일한 클래스로 초기화되는 select2에 미리로드 된 값

분류에서Dev

동일한 부분보기의 여러 인스턴스 유효성 검사

분류에서Dev

다중 처리를 사용하여 동일한 프로세스의 여러 인스턴스 생성

분류에서Dev

다른 인스턴스와 동기화하는 한 UserControl 인스턴스의 UserControl에 바인딩

분류에서Dev

생성자가 다른 다른 클래스에 대한 인스턴스 만들기

분류에서Dev

동일한 파일 대 다른 파일 대 __init__.py에서 파이썬 클래스 인스턴스화

분류에서Dev

Angular에서 여러 서비스 인스턴스 피하기

분류에서Dev

자바 스크립트에서 동일한 프로토 타입의 다른 인스턴스 만들기

분류에서Dev

다른 컨트롤러 메서드에서 .Net WebApi 동시 생성자 초기화

분류에서Dev

다른 컨트롤러 메서드에서 .Net WebApi 동시 생성자 초기화

Related 관련 기사

  1. 1

    .NET Core에서 다른 생성자 매개 변수 (DI 및 비 DI)를 사용하여 IHostedService의 여러 인스턴스 등록

  2. 2

    Interface Builder에서 동일한 클래스의 여러 객체를 인스턴스화하면 공유 속성이 생성됩니다.

  3. 3

    여러 인스턴스에서 일부 속성 값을 확인하고 Python의 동일한 인스턴스에서 다른 속성을 인쇄하십시오.

  4. 4

    여러 스레드에서 var 인스턴스화 동기화

  5. 5

    여러 클래스가 다른 클래스의 동일한 인스턴스에 액세스해야합니다.

  6. 6

    ec2 인스턴스에서 다른 ec2 인스턴스를 스핀 업하고 여기에 csv 파일을 푸시합니다.

  7. 7

    SQLAlchemy 인스턴스에 대한보다 간결한 초기화

  8. 8

    동일한 방법을 사용하여 다른 네임 스페이스에서 동일한 개체를 인스턴스화

  9. 9

    Angular 기반 웹 앱에 대한 다른 JS 파일에서 JS 클래스 인스턴스화

  10. 10

    생성자 C ++의 다른 클래스에 대한 포인터 초기화

  11. 11

    컴파일러는 최종 인스턴스 변수가 초기화되지 않았다고 생각합니다.

  12. 12

    동일한 클래스에서 여러 객체를 인스턴스화 할 때 코드가 실행되지 않지만 동일한 코드를 사용하여 중복 클래스에서 객체를 인스턴스화 할 때 작동합니다.

  13. 13

    Word 2007에서 동일한 파일의 여러 인스턴스 열기

  14. 14

    Angular 8 : 동일한 서비스의 여러 인스턴스 사용

  15. 15

    인수를 사용하여 다른 클래스 생성자에서 개체 초기화

  16. 16

    다른 클래스에서 private 생성자를 사용하여 개체를 인스턴스화하는 방법

  17. 17

    Angular 2에서 개체의 여러 다른 주입 된 인스턴스

  18. 18

    다른 의도 개체에 대해 동일한 활동의 여러 인스턴스

  19. 19

    case 문으로 인해 다른 열에 채워지는 동일한 ID의 여러 인스턴스

  20. 20

    여러 select2가 동일한 클래스로 초기화되는 select2에 미리로드 된 값

  21. 21

    동일한 부분보기의 여러 인스턴스 유효성 검사

  22. 22

    다중 처리를 사용하여 동일한 프로세스의 여러 인스턴스 생성

  23. 23

    다른 인스턴스와 동기화하는 한 UserControl 인스턴스의 UserControl에 바인딩

  24. 24

    생성자가 다른 다른 클래스에 대한 인스턴스 만들기

  25. 25

    동일한 파일 대 다른 파일 대 __init__.py에서 파이썬 클래스 인스턴스화

  26. 26

    Angular에서 여러 서비스 인스턴스 피하기

  27. 27

    자바 스크립트에서 동일한 프로토 타입의 다른 인스턴스 만들기

  28. 28

    다른 컨트롤러 메서드에서 .Net WebApi 동시 생성자 초기화

  29. 29

    다른 컨트롤러 메서드에서 .Net WebApi 동시 생성자 초기화

뜨겁다태그

보관