Чтобы получить данные от сервиса к моему компоненту - PullRequest
0 голосов
/ 27 июня 2018

У меня есть служба PortAllocationService ниже

@Injectable({
  providedIn: 'root'
})
export class PortAllocationService {
  businessSwitchName: any;businessSwitchIp: any;businessSwitchportName: any;
  businessSwitchNodeId: any;routerName: any;routerIp: any;routerDetailsportName: any;
  routernodeID: any;aggSwitchName: any;aggSwitchPort: any;aggNodeIP: any;
  aggNodeId: any;serviceName: any;convertorDetails: any;handoffPort: any;qosLoopingPort: any;

  constructor(private http:HttpClient) { }

  portService(da){
    return this.http.post(url.portAllocationUrl , da).
    subscribe ((response:any) => {
      //Port Allocation response is mapped here
      console.log(response);
      // businessSwitchDetails 
      this.businessSwitchName = response.businessSwitchDetails.nodeName;
      this.businessSwitchIp = response.businessSwitchDetails.nodeIP;

     });

  }

и мой компонент, как показано ниже

export class WimaxFormComponent {
  data : any = {};
  btsIp :any; vCategory:any;nVlan:any;
 businessSwitchName:any;businessSwitchIp:any;businessSwitchportName:any;
 routerName:any;routerIp:any;aggSwitchName:any;aggSwitchPort:any;
 routerDetailsportName:any;routernodeID:any;aggNodeIP: any;aggNodeId: any;
 businessSwitchNodeId: any;serviceName: any;convertorDetails: any;
 handoffPort: any;qosLoopingPort: any;
 serviceId: any;serviceType: any;customerName: any;
 vReservedValue:boolean;cVlan: string;sVlan: any;
 path: string;

   constructor(
  private service: PortAllocationService){

  }

onChange(){

  let portAllocationData = {
  "serviceAttribute": {
    "serviceType": this.serviceType,
    "category": "category",
    "name": this.serviceId
  },
  "btsIp": this.btsIp
}
console.log(portAllocationData);

  this.service.portService(portAllocationData);
}

Когда я вызываю функцию onChange, вызывается сервис, и мы получаем ответ от сервера. Но я хочу получить доступ ко всем значениям переменных из моего сервиса в Component, как, например, я пробовал в конструкторе и onChange как

this.businessSwitchName = service.businessSwitchName // это неопределенное значение

Не могли бы вы дать мне знать, как получить доступ к значениям переменной в компоненте.

1 Ответ

0 голосов
/ 27 июня 2018

Вместо того, чтобы подписываться на вызов API в самой службе, я просто вернул бы наблюдаемое, сделанное http.post(). А затем переместите подписку на сам компонент:

Услуги:

portService(da){ return this.http.post(url.portAllocationUrl , da) });

Компонент:

this.service.portService(portAllocationData).subscribe(response => {
    // Do stuff with the response here
});

Однако, если вы действительно хотите сохранить переменные в службе, я бы поместил вызов API в конструктор службы, изменив поля в службе, чтобы они начинались с подчеркивания (или какого-либо другого локального / частного идентификатора) а затем есть методы get для каждой переменной, к которой вы хотите иметь доступ.

Услуги:

get businessSwitchName() {
    return this._businessSwitchName;
}

Компонент:

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