angular - 从 URL 路径读取变量
问题描述
我正在尝试从 Angular 中的 URL 读取变量。
我的路线中有这个
const routes: Routes = [
{ path: ':page', component: BlogComponent}
];
这在我的博客组件构造函数中。
this.route.paramMap.subscribe(params => {
const page = params.params.page;
cacheService
.getAllPostIds()
.subscribe(postIds => this.loadPage(cacheService, postIds, page)
);
});
如果有参数,则此方法有效,即www.url.com/1
返回 page = 1。
如果 url 之后没有任何内容(只是www.url.com
),那么这永远不会触发路由订阅。这是订阅 url 变量和更改的正确方法吗,如果不是,我应该怎么做,如果是,即使只有一个空白 url,我如何使它工作/
解决方案
用2条路线解决了它。
const routes: Routes = [
{ path: '', component: BlogComponent, pathMatch: 'full' },
{ path: ':page', component: BlogComponent, pathMatch: 'full' },
];
和这样的构造函数:
constructor(private cacheService: CacheService, private route: ActivatedRoute) {
this.route.paramMap.subscribe(params => {
let page = params.params.page;
if (page == null){
page = 1;
}
console.log('page: ' + page);
cacheService
.getAllPostIds()
.subscribe(postIds => this.loadPage(cacheService, postIds, params.params.page)
);
});
}
当没有参数时原始路径没有被击中:page
,然后添加,如果没有页面,构造函数默认为 1。
不确定这是否是最好的方法。
推荐阅读
- java - 春季启动CORS配置
- java - 使用 Jackson 解析 JSON:我们可以在 POJO 中包含可选变量吗
- swift - Swift Calculator:运算符优先级问题
- arrays - 使用集合对数组项进行分类?
- python - 无法在 MicroPython 上导入机器模块
- asp.net-web-api2 - Web API 2,令牌认证和授权
- powershell - Enter-PSSession Centos To Windows
- javascript - Javascript 格式化时间 - 日期 fns
- laravel - Laravel分页最新抛出非对象错误
- java - Jersey 客户端:太多的 Content-Type 标头值