angular 2 - 订阅函数调用两次

时间:2016-11-06 14:36:13

标签: angular

我有这段代码:

import { Component } from '@angular/core';
import { ViewService } from './view.service';
import { Router, ActivatedRoute, Params } from '@angular/router';


@Component({
  selector: 'app-view',
  templateUrl: './view.component.html',
  styleUrls: ['./view.component.css'],
  providers: [ViewService]
})
    export class ViewComponent {

      constructor(viewService: ViewService, private route: ActivatedRoute) {

        this.route.params.map(params => params['id']).subscribe((id) => {
            console.log("id: "  + id);
        });

      }
    }

我已将代码订阅到运行参数。 问题是 - 订阅功能被称为两次 - 第一次 - id未定义。 第二次 - 存在id值。

这个问题可能是什么原因?

1 个答案:

答案 0 :(得分:5)

这里的问题是我的ViewComponent被加载了两次。这就是构造函数被调用两次的原因:

  1. 在我的select patientid, min(dt), max(dt), count(*) from (select t.*, sum( (case when dt > prev_dt + interval '7 day' then 1 else 0 end) ) over (partition by patientid order by dt) as grp from (select t.*, lag(dt) over (partition by patientid order by dt) as prev_dt from t ) t ) t group by patientid, grp; 中定义路由时。这里:

    app.module.ts

  2. 在我的app.component.html中 - 我添加了RouterModule.forRoot([ { path: '', component: ViewComponent }标记。