Невозможно решить проблему из-за ngOnInit () в angular2 + - PullRequest
0 голосов
/ 17 ноября 2018

У меня есть поток как - родительский компонент имеет три дочерних компонента.Дочерние элементы имеют все функции, поступающие из ngOnInit родительского компонента.вся работа ребенка на основе родителя.Дочерние компоненты работают с ngOnInit () родительского компонента .ie, когда я перехожу к дочернему компоненту - запускается дочерний ngOnInit (), а затем запускается родительский ngOnInit ().Теперь я хочу, чтобы функция, определенная в родительском компоненте, не работала внутри родительского компонента, но когда она переходит к дочернему компоненту, она должна функционировать.И мы не можем отделить эту функцию и поместить ее только в дочерний элемент (что, возможно, является решением).

Так что мы решили работать над приведенным выше вариантом использования, используя Service SharedComponent, который помогает, поскольку я определяю переменную глобально,

код -

Facility-Definition.service.ts

import { Injectable, OnInit } from '@angular/core';


export interface SharedModel {

    factorFlag:boolean
    }

@Injectable({
  providedIn: 'root'
})

export class FacilityDefinitionService {

    SharedComponent: SharedModel = {

        factorFlag:false
      }
}

parent.component.ts

export class WorkOrderLimitComponent implements OnInit {


shareData;

constructor( private _woFaclityService: FacilityDefinitionService){

  this.shareData = _woFaclityService.SharedComponent;
}

ngOnInit(){

addSubscribers() {

       //code

                        if(!this.shareData.factorFlag == true){
                        //code
                        });

//code
                        }

}

child.component.ts

export class FactorFormComponent implements OnInit {

ngOnInit() {
this.shareData.factorFlag = true;
}
}

Но с этой глобальной переменной factorFlag изначально она ложна, как определено в Service.ts икогда вы вводите родительский компонент, он снова ложен.Теперь, когда вы переходите к дочернему компоненту, глобальная переменная factorflag становится истинным глобально, поэтому код в addSubscribeers () родительского компонента становится истинным и запускается.Теперь вы снова возвращаетесь к родительскому компоненту, факторфлаг остается верным, поэтому функция внутри родительского компонента запускается.Мы не можем сделать factorflag = false в ngOnInit () родительского компонента, поскольку при переходе к дочернему компоненту запускается первый дочерний компонент ngOnInit (), а затем запускается родительский компонент ngOnInit ().

Пожалуйста, помогите решить проблему.Мы хотим, чтобы addSubscribeers () запускался, только когда у потомка, а не у родителя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...