所以我想在根组件中更改路由时获取参数,我试过这个:
export class AppComponent {
constructor(_router: Router) {
_router.events.subscribe((links) => {
console.log("detection : ",links);
});
}
}
在结果中我获得了每个路线变化事件的链接,例如:
deletection : "/product/1"
deletection : "/product/2"
但我无法获取参数值(1和2)。
我还测试了activateRoute宽度参数,但是当路线改变时我没有得到任何结果。
路线档案:
export const routes: Routes = [
{ path: "", component: LoginComponent },
{ path: "login", component: LoginComponent, canActivate: [LoggedOutGuard] },
{ path: "product/:id", component: ProductComponent, canActivate: [LoggedOutGuard] },
];
export const appRoutingProviders: any[] = [];
export const routing: ModuleWithProviders = RouterModule.forRoot(routes);
答案 0 :(得分:1)
所以我希望在路由更改时获取根组件中的参数
你不能。为什么?因为您的根组件未分配给任何路由。转到 ProductComponent 并将其更改为以下内容:
import { Component, OnDestroy, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { Subscription } from 'rxjs/Subscription';
@Component({
selector: 'product'
})
export class ProductComponent implements OnInit, OnDestroy {
private sub: Subscription;
constructor(
private route: ActivatedRoute
) { }
ngOnInit(): void {
this.sub = this.route.params.subscribe(params => {
console.log(params)
});
}
ngOnDestroy() {
this.sub.unsubscribe();
}
}
您会注意到您的产品ID将在控制台中登录,为什么?由于 ProductComponent 已分配给路径product/:id
,因此基本上您的组件只能获取分配给它们的路径的路径参数。
AppComponent 了解路径参数的唯一方法是使用服务来共享该信息。因此,您的 ProductComponent 应该与您创建的 RouteParamsService 进行对话。
答案 1 :(得分:0)
我认为这可能对你有帮助....
constructor(private router:Router){
router.routerState.queryParams.subscribe(
(data:any) => {
console.log("userName parameter in routing "+data['userName']);
});
}
答案 2 :(得分:0)
我认为你需要像
这样的东西$row = get_db_row("SELECT UNIX_TIMESTAMP(send_date) AS send_date_ts
FROM table WHERE $condition");
$hours = (int) ($row['send_date_ts'] / 3600);
$current_hours = (int) (time() / 3600);
if ($hours == $current_hours) {
// current hour
}
未经过测试