问题描述: 使用Angular 10获取“类型'typeof'上不存在属性'route'”。
回答:
在Angular 10中,当我们尝试使用typeof
来获取某个类型的属性时,可能会遇到“类型'typeof'上不存在属性'route'”的错误。这是因为typeof
操作符只能获取类型的静态部分,而不包括运行时的实例属性。
要解决这个问题,我们可以使用@ViewChild
装饰器来获取路由对象。@ViewChild
允许我们在组件中引用子组件、指令或DOM元素,并访问它们的属性和方法。
首先,确保你已经在组件中导入了ViewChild
和Router
:
import { Component, ViewChild, AfterViewInit } from '@angular/core';
import { Router } from '@angular/router';
然后,在组件类中使用@ViewChild
装饰器来获取路由对象:
export class YourComponent implements AfterViewInit {
@ViewChild(Router) router: Router;
ngAfterViewInit() {
// 在这里可以访问路由对象的属性和方法
console.log(this.router.url);
}
}
在上面的示例中,我们使用@ViewChild(Router)
来获取路由对象,并将其赋值给router
属性。然后,在ngAfterViewInit
生命周期钩子中,我们可以访问路由对象的属性和方法,例如url
属性。
这样,我们就可以成功获取路由对象,而不会再遇到“类型'typeof'上不存在属性'route'”的错误。
推荐的腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云