Angular дублирующий конструктор - PullRequest
0 голосов
/ 03 августа 2020
• 1000 Что вы мне предлагаете и как это сделать?

Код конструктора, который появляется на 4 компонентах:

constructor(private transverseService: TransverseService, private webReferentielService: WebReferentielService) {

        this.transverseService.setLanguage(new Messages(this.webReferentielService));
        this.messages = this.transverseService.getMessages();

        transverseService.messageObservable.subscribe(
            msg => {
                this.messages = msg;
            }
        );

        this.transverseService.initConfig().then(data => {
            this.configEnv = data;
            this.version = this.configEnv.version;
            this.env = this.configEnv.env;
        });

    }

Ответы [ 2 ]

2 голосов
/ 03 августа 2020

Вы можете создать одноэлементную службу для его решения,

@Injectable({providedIn: 'root'}) 
export class SomeService{

        // declare variables here
   
        constructor(private transverseService: TransverseService, 
                    private webReferentielService: WebReferentielService, 
                    /** inject other dependencies */) {

        this.transverseService.setLanguage(new Messages(this.webReferentielService));
        this.messages = this.transverseService.getMessages();


        transverseService.messageObservable.subscribe(
            msg => {
                this.messages = msg;
            }
        );

        this.transverseService.initConfig().then(data => {
            this.configEnv = data;
            this.version = this.configEnv.version;
            this.env = this.configEnv.env;
        });

    }  
}

В компоненте (ах),

    constructor(private someService: SomeService){
         // access someService here
    }
1 голос
/ 03 августа 2020

Вы можете использовать абстрактный класс и ваши 4 компонента расширяются от этого класса.

export class AbstractComponent {
  constructor(
    protected transverseService: TransverseService,
    protected webReferentielService: WebReferentielService
  ) {
    // do constructor stuff here
    // ...
  }
}

И ваши компоненты будут выглядеть так:

@Component({
  selector: 'component-1',
  ...
})
export class ComponentOne extends AbstractComponent {
  // the constructor is inherited from the abstract class
}


@Component({
  selector: 'component-2',
  ...
})
export class ComponentTwo extends AbstractComponent {
  // the constructor is inherited from the abstract class
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...