角度解析器返回未定义

时间:2021-07-25 06:55:20

标签: angular resolve

我是 angular 的新手,我正在尝试在我的 angular 中实现解析,其中我的需要是组件应该仅在数据可用时加载。但问题是解析代码在我可以在组件中捕获它之前执行,并且组件中返回的数据给出了未定义的值。

解析代码:

sugar@cube:~/Downloads$ java -jar test.jar
Exception in thread "main" java.lang.UnsatisfiedLinkError: Can't load library: 
/usr/lib/jvm/java-16-openjdk-amd64/lib/libawt_xawt.so
    at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2387)
    at java.base/java.lang.Runtime.load0(Runtime.java:746)
    at java.base/java.lang.System.load(System.java:1857)
    at java.base/jdk.internal.loader.NativeLibraries.load(Native Method)
    at java.base/jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(NativeLibraries.java:383)
    at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:227)
    at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:169)
    at java.base/jdk.internal.loader.NativeLibraries.findFromPaths(NativeLibraries.java:310)
    at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:280)
    at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2392)
    at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:808)
    at java.base/java.lang.System.loadLibrary(System.java:1893)
    at java.desktop/java.awt.Toolkit$2.run(Toolkit.java:1389)
    at java.desktop/java.awt.Toolkit$2.run(Toolkit.java:1387)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:312)
    at java.desktop/java.awt.Toolkit.loadLibraries(Toolkit.java:1386)
    at java.desktop/java.awt.Toolkit.<clinit>(Toolkit.java:1419)
    at java.desktop/java.awt.Component.<clinit>(Component.java:622)

组件代码:

    export class RouteResolver implements Resolve<any> {
    
      ongoingClasses: any;
      sortedDataClasses: any;
      
      constructor(
        public commonService: CommonService,
        private router: Router,
      ) { }
    
      resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<any> {
        return this.getOngoingClasses();
      }
    
      getOngoingClasses(): any {
        debugger;
        this.commonService.API_URL = `${environment.apiUrl}/admin/dashboardOngoingClasses?limit=10&offset=0&searchInput=`;
        this.commonService.getList().subscribe(
          response => {
            this.ongoingClasses = response?.data;
          }
        );
      }
    
    }

路线代码:

    ngOnInit(): void {
        debugger
        this.activateRoute.data.subscribe((results: { results: any }) => {
          console.log(results.results);
        });
      }

请帮我解决这个问题。

2 个答案:

答案 0 :(得分:2)

您没有从 getOngoingClasses 返回任何内容,这就是您的解析器返回 undefined 的原因。与其订阅某些东西,不如返回一个可观察对象:

getOngoingClasses(): any {
  debugger;
  this.commonService.API_URL = `${environment.apiUrl}/admin/dashboardOngoingClasses?limit=10&offset=0&searchInput=`;
  return this.commonService.getList().pipe(map(response => response?.data));
}

答案 1 :(得分:1)

在地图块的末尾添加 return 。像这样:

return this.commonService.getList().pipe(map(response => return response?.data));