Angular 服务中的路由参数
Angular route params in service
我需要在我的服务中获取路由参数
import {Inject, Injectable} from '@angular/core';
import {BehaviorSubject} from 'rxjs';
import {ActivatedRoute, NavigationEnd, Router} from '@angular/router';
@Injectable({
providedIn: 'any'
})
export class LocationService {
constructor(
private router: Router,
private route: ActivatedRoute
) {
console.log('ddd ', );
this.router.events.subscribe((data) => {
if (data instanceof NavigationEnd) {
console.log('this.route.snapshot.params[\'city\']; ', this.route.firstChild.snapshot.params['city']);
}
});
}
}
在
的组件中
this.router.events.subscribe((data) => {
if (data instanceof NavigationEnd) {
console.log('this.route.snapshot.params[\'city\']; ', this.route.firstChild.snapshot.params['city']);
}
});
工作正常,但在服务中 city
未定义
如果我在组件中提供位置服务
@Component({
selector: 'app-city-chooser',
templateUrl: './city-chooser.component.html',
styleUrls: ['./city-chooser.component.scss'],
providers: [LocationSerivce]
})
我的服务调用了两次(我在不同的组件中使用我的服务)
如何在我的服务中获取路由参数?
更新:项目有两个模块!!!
BasicModule 和 DashboardModule
你可以将参数传递给服务方法并做任何你想做的事情,在服务中获取路由参数不是一个好的方法,我们应该避免它。
export class LocationService {
constructor() {}
doSomething(param) {
// write your logic here
console.log(param)
}
在组件中
constructor(private route: ActivatedRoute, private service: LocationService) {
const params = this.route.snapshot.params['city'];
this.service.doSomething(params)
}
希望这有效。
我需要在我的服务中获取路由参数
import {Inject, Injectable} from '@angular/core';
import {BehaviorSubject} from 'rxjs';
import {ActivatedRoute, NavigationEnd, Router} from '@angular/router';
@Injectable({
providedIn: 'any'
})
export class LocationService {
constructor(
private router: Router,
private route: ActivatedRoute
) {
console.log('ddd ', );
this.router.events.subscribe((data) => {
if (data instanceof NavigationEnd) {
console.log('this.route.snapshot.params[\'city\']; ', this.route.firstChild.snapshot.params['city']);
}
});
}
}
在
的组件中this.router.events.subscribe((data) => {
if (data instanceof NavigationEnd) {
console.log('this.route.snapshot.params[\'city\']; ', this.route.firstChild.snapshot.params['city']);
}
});
工作正常,但在服务中 city
未定义
如果我在组件中提供位置服务
@Component({
selector: 'app-city-chooser',
templateUrl: './city-chooser.component.html',
styleUrls: ['./city-chooser.component.scss'],
providers: [LocationSerivce]
})
我的服务调用了两次(我在不同的组件中使用我的服务)
如何在我的服务中获取路由参数?
更新:项目有两个模块!!! BasicModule 和 DashboardModule
你可以将参数传递给服务方法并做任何你想做的事情,在服务中获取路由参数不是一个好的方法,我们应该避免它。
export class LocationService {
constructor() {}
doSomething(param) {
// write your logic here
console.log(param)
}
在组件中
constructor(private route: ActivatedRoute, private service: LocationService) {
const params = this.route.snapshot.params['city'];
this.service.doSomething(params)
}
希望这有效。