0

私はangular2プロジェクトで仕事をしています。私たちのauthガードコードの1つの問題です。angle2でコールバックまたはobservableを使用する方法は?

私はスクリプトが呼び出し可能な関数の結果を待っていないと思います。 「は定義されていません。」の結果変数コンソール。

このコンソールイメージを表示してください。 enter image description here

だから私を助けてください。

1)のauth-guard.service.ts

@Injectable() 
     export class RoutePermissionGuard implements CanActivate{ 
      private menuType:any; 
      constructor(
      private router: Router, 
      private _shared:SharedService 
     ) { } 

    // return only true or false 
      canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot):boolean { 
      let url: string = state.url; 
      let slug = route.data['slug']; 
      let type = route.data['type']; 
      if(slug !== ""){ 
       this._shared.menuList.subscribe(menus =>{ 
        let result = this.getMenuOgj(menus,slug,type); 
        console.log("result: "+ result); // Get undefine varibale 
       }); 
      } 
      return true; 
      } 

    // This is recursive function and my first if condition is true then my second if is return true or false 
      getMenuOgj(menus, menuSlug, type):boolean { // return only true or false 
       menus.forEach((menu) =>{ 
        if(menu.menu_slug === menuSlug){ 
         if(type==="view"){ 
          this.menuType = menu.view; 
         }else if(type==="edit"){ 
          this.menuType = menu.edit; 
         } 

         if (this.menuType===1 || this.menuType==='1' || this.menuType===true) { 
          return true; 
         }else{ 
          return false; 
         } 
        } 
        this.getMenuOgj(menu.submenu, menuSlug, type); 
       }); 
      } 
     } 

答えて

0

あなた

getMenuOgj(menus, menuSlug, type) { 

は何も返しません。

return true; 

だけあなたがで何かを返す必要がmenues.forEach(...)

に渡されたコールバック関数からtrueを返すとgetMenuOgj()

+0

のより多くの何をしようとしたか、何を説明してください –

+0

以上を説明working..pleaseありません達成しようとする。私はあなたが返されることを期待しているか分からない。 –

+0

"getMenuOgj"は再帰関数で、最初のif条件が真、次に2番目のifがtrueまたはfalseを返します –

関連する問題