2017-12-11 6 views
0

나는이 모든 쿼리 문자열에 대한 경로 파일을 조작 할 필요가있는 경우각도 5 activatedroute 구독 내 app.routes.module.ts 파일 탐색에, 그러나 범죄</p> <pre><code>{ path: 'criminal', component: CriminalComponent, pathMatch: 'full'}, </code></pre> <p>에 대한 경로를 처리하는 경로와 각 5 응용 프로그램을

<td href="/criminal/?UserID=67694&AppID=4&AppGroupID=13&AM&LoginKey=202088840" >CR Programmers</a></td> 

나는 확실하지 않았다 : 여기에, 나는 각도에 이전 사이트를 업그레이드 그리고 난 이제 생성 된 URL을 사용하는거야 것은 예를 들어 링크 매개 변수를 위해 MENU 속 나는 그것을 거기에 넣고 있었다.

ngOnInit(): void { .... } 

그래서하는 OnInit 내부 나는 내가 그들을 분리 한 경우, 그 조건 보인다

나는 모든 PARAMS 전달 서비스 요청을해야 그런 다음 쿼리 문자열 을 구문 분석 할 필요가 알고있는 경우에 경우 메뉴가 시간 내에 처리되지 않았고 메뉴 서비스 호출이 발생하지 않았습니다.

내 서비스 호출에 쿼리 매개 변수 섹션을 등록하는 방법이 있습니까? 기본적으로 위의 코드

this.activatedRoute.queryParamMap 
     .map((params: Params) => params.params) 
     .subscribe((params) => { 
      if (params && params['UserID']) { 
       let UserID = params['UserID']; 
       let AppID = params['AppID']; 
       console.log('UserID', UserID); 
       console.log('AppID', AppID); 
       this.hasMenu = 1; 
       console.log('hasmenu', this.hasMenu) 

       this.arsSevice.getMenu() //will pass params 
       .subscribe(
       result => { 
        this.menuA = result["data"].Menu1Items 
        this.menuB = result["data"].Menu2Items 
        this.menuC = result["data"].Menu3Items 
        this.menuD = result["data"].Menu4Items 
        this.menuE = result["data"].Menu5Items 

       }, 
       error => { 
        console.log('menu error', error); 
       }) 


      } 
     }); 

은 다음과 같이 할 수있는 getMenu() 호출 (현재 전달되지 PARAMS)

가 나는 그것이

이 부분 내에 중첩하지 하시겠습니까

내가 선호를 가지고

if (this.hasMenu == 1) { 
    this.arsSevice.getMenu() 
       .subscribe(
       result => { 
        this.menuA = result["data"].Menu1Items 
        this.menuB = result["data"].Menu2Items 
        this.menuC = result["data"].Menu3Items 
        this.menuD = result["data"].Menu4Items 
        this.menuE = result["data"].Menu5Items 

       }, 
       error => { 
        console.log('menu error', error); 
       }) 

    } 

답변

1
당신은 체인

그들을 조건 검사 및 flatMap /지도를 할 필터를 사용할 수 있습니다

this.activatedRoute.queryParamMap 
    .map((params: Params) => params.params) 
    .filter((params) => params && params['UserID']) 
    .flatMap(params=>{ 
      ..... your other operation 
      return this.arsSevice.getMenu() 
    }).map(result => { 
       this.menuA = result["data"].Menu1Items 
       this.menuB = result["data"].Menu2Items 
       this.menuC = result["data"].Menu3Items 
       this.menuD = result["data"].Menu4Items 
       this.menuE = result["data"].Menu5Items 
}).subscribe()