javascript - 从应用程序中直接输入的网址读取路由参数

标签 javascript angular angular4-router

我的问题是关于 Angular 4,如何获取路由参数,例如,如果用户使用而不是默认网址进入您的页面,例如http://localhost:3000/ ,类似于 http://localhost:3000/user/:id ,并且能够从该 url 中获取 :id (用户直接在浏览器中输入它,而不是通过应用程序导航)。

在下面的示例中使用了相同的组件,主要是因为需要捕获该 id 并分派(dispatch)其他操作(如果存在),那就是它。

我尝试过使用 ActivatedRoute 但据我所知,只有在应用程序内部导航整个应用程序时才有效,在这种情况下则不然,它总是返回 null value 如果直接在浏览器中输入该 url,它将被重定向到默认的 / 路由,就是这样。

非常感谢任何提示或指示

app.routing-module.ts

import {hookComponent} from './hook.component';
import {RouterModule, Routes} from '@angular/router';
import {NgModule} from '@angular/core';

export const routes: Routes = [
  {
    path: '',
    component: HookComponent
  },
  {
    path: 'user/:id',
    component: HookComponent
  }
];

@NgModule({
  imports: [RouterModule.forRoot(routes, { enableTracing: true })],
  exports: [RouterModule]
})
export class AppRoutingModule {}

钩子(Hook)组件

import {Component, EventEmitter, Input, OnInit, ViewChild} from '@angular/core';
import { ActivatedRoute, ParamMap} from '@angular/router';

@Component({
  selector: 'hook',
  templateUrl: 'hook.component.html',
  styleUrls: ['hook.component.scss']
})
export class HookComponent implements OnDestroy, OnInit {
  constructor(private route: ActivatedRoute) {
    
  }

  ngOnInit() {
    this.sub = this.route.params.subscribe(params => {
       console.log('params are', params); //null?
    });

  }
}

最佳答案

你的方式已经没问题了,但是在你的示例中 params 是一个数组,你可以通过调用 params['id']< 来访问 :id/:

this.sub = this.route.params.subscribe(params => {
  console.log('params are', params['id']);
});

Here是 stackblitz 上的一个工作示例。

关于javascript - 从应用程序中直接输入的网址读取路由参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48563824/

相关文章:

javascript - Angular 7 - 为动态创建的组件添加拖放行为

angular - AOT - Angular 6 - 指令 SomeComponent,预期 0 个参数,但得到 1 个。对于自制组件

angular - 刷新页面会导致 404 错误 - AWS - Angular 6

angular - <mat-tab> Angular Material 中的 routerLink

JavaScript 正则表达式 : ignore every letter after backslash

javascript - jQuery keyup 在 IE7 中不起作用

javascript - 取消方法内默认的onbefoarunload弹窗消息

javascript - 关闭 Bootstrap 模式后重置验证消息

angular - Angular 6 中的 Observable<string> 类型上不存在属性 'publish'

javascript - 浏览器重新加载时 Angular 4 重定向到根路径