加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Angular 2在服务中获取routeParams

发布时间:2020-12-17 10:17:17 所属栏目:安全 来源:网络整理
导读:我想将逻辑从组件转移到服务.但我发现我无法在服务中获得routeParams. 我的组件看起来像 import { Component,OnInit } from '@angular/core';import { ActivatedRoute,Params } from '@angular/router';import { MyService } from '../services/my.service';
我想将逻辑从组件转移到服务.但我发现我无法在服务中获得routeParams.

我的组件看起来像

import { Component,OnInit }      from '@angular/core';
import { ActivatedRoute,Params } from '@angular/router';

import { MyService }              from '../services/my.service';

@Component({
  moduleId: module.id,templateUrl: 'my.component.html',styleUrls: ['my.component.css']
})
export class MyComponent implements OnInit {
  constructor(private myService: MyService,private route: ActivatedRoute) {;}

  public ngOnInit() {
    this.route.params
      .subscribe((params: Params) => {
        debugger;
        console.log(params);
      });
    this.myService.getParams()
      .subscribe((params: Params) => {
        debugger;
        console.log('Return1:');
        console.log(params);
      },(params: Params) => {
        debugger;
        console.log('Return2:');
        console.log(params);
      },() => {
        debugger;
        console.log('Return3:');
    });
  }
};

我的服务看起来像

import { Injectable }                     from '@angular/core';
import { Params,ActivatedRoute }         from '@angular/router';

import { Observable }                     from 'rxjs';

@Injectable()
export class MyService {
  constructor(private route: ActivatedRoute) {;}

  public getParams(): Observable<Params> {       
    this.route.params.subscribe((params: Params) => {
      debugger;
      console.log('Service1:');
      console.log(params);
    },(params: Params) => {
      debugger;
      console.log('Service2:');
      console.log(params);
    },() => {
      debugger;
      console.log('Service3:');
    });
    return this.route.params;
  }
};

当我调试时,我可以看到params填充组件并且在服务中为空.结果就是这样

Component:
Object {param: "1"}
Service1:
Object {}
Return1:
Object {}

我正在使用Angular 2.0.0.为什么组件和服务有所不同?是否可以在服务中获得参数?

编辑:
https://github.com/angular/angular/issues/11023

我们可以将ActivatedRoute传递给组件服务.然后在服务类中订阅route.params

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读