How to use ActivatedRoute in Angular 5?

时光怂恿深爱的人放手 提交于 2020-08-18 14:20:37

问题


I am trying to do exactly the same thing as in this post: Angular 4 get queryString

I am using Angular 5.2.5.

ActivatedRoute seems to be the thing to use to retrieve querystring values off the URL when the user first visits the website. However, I am unable to figure out what I need to import to be able to use ActivatedRoute.

Could someone specify exactly what needs to be added to the app.module.ts file, and the component.ts file where I am trying to use ActivatedRoute?

This post specifies adding routing to the imports array of the @NgModule: No provider for ActivatedRoute - Angular 2 RC5. However, I don't have an app.routing.ts file. Do I have to create an app.routing.ts file to use ActivatedRoute?


回答1:


ActivatedRoute Contains the information about a route associated with a component loaded in an outlet. It can also be used to pass data from one component to another component using route such as Id, flag, state etc.

http://localhost:4200/quiz/edit_quiz/032

032 being id of the quiz you wanna edit.

Get this id in your component(in my case let it be edit_quiz.compontent.ts) to use by using Activated Route.

Step 1: Import ActivatedRoute from Router module.

import { ActivatedRoute } from '@angular/router';

Step 2: Inject ActivatedRoute in constructor.

  constructor(private activatedRoute: ActivatedRoute) { }

Step 3: Get id on a local variable named quizId in ngOnInit(){}

   ngOnInit() {
    this.quiz_id = this.activatedRoute.snapshot.params['id'];
   }

Now we have id in edit_quiz.component.ts to use.




回答2:


I made the two changes Arun suggested. Then, to fix the "No provider for ActivatedRoute" error, I made the changes shown below.

1) I added this line to the app.module.ts:

import { RouterModule } from '@angular/router';

2) I added this line to the imports array of the @NgModule in app.module.ts:

RouterModule.forRoot([])

This article gave me the fix: Angular error: no provider for ActivatedRoute

Now it compiles. Hooray!




回答3:


You need to import ActivatedRoute from @angular/router like

import { ActivatedRoute } from '@angular/router';

then add this line to the imports array of the @NgModule in app.module.ts:

imports:[
        ........,
        RouterModule.forRoot()
],

then you can use any where as below:

constructor(private route: ActivatedRoute) {
     console.log(route.snapshot.queryParamMap); // this
}
// or
queryString : string;
getQueryString(){
   this.queryString = this.route.queryParamMap.get('myQueryParam');
}

No. You don't need app.routing.ts if you don't have to navigate pages within your app.




回答4:


ActivatedRoute

I'm late to the conversation but hope the following works for the future programmers who encounter the same issue.

import the ActivatedRoute

import { ActivatedRoute } from '@angular/router';

Inject the dependency injection

constructor(
    private route: ActivatedRoute,
  ) { }

and to grab the id from the link you can use the following

  ngOnInit() {
  this.route.paramMap.subscribe(params => {
    this.product = products[+params.get('productId')];
  });
}


来源:https://stackoverflow.com/questions/50164670/how-to-use-activatedroute-in-angular-5

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!