(联合类型)为字符串值提供 NaN,angular,typescript,union-types"/>

首页 > 解决方案 > 订阅 Observable(联合类型)为字符串值提供 NaN

问题描述

在一个组件中,我有一个这样定义的公共成员:

public documentId$: Observable<number | string>;

基本上,文档 ID 可以是整数或字符串。在ngOnInit我有:

this.documentId$.subscribe(value => {
    // do some stuff with value
    // when value is a string, it is NaN
});

但是,当文档 ID 是字符串时,这不起作用。它只是作为NaN. 联合类型的可观察对象不起作用吗?有没有解决的办法?

标签: angulartypescriptunion-types

解决方案


我没有看到使用联合类型的问题。检查你得到的数据。这个有效:https ://stackblitz.com/edit/angular-rur73e

import { Component } from '@angular/core';
import { Observable } from 'rxjs';
import { Subject } from 'rxjs';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: [ './app.component.css' ]
})
export class AppComponent  {

  private subject = new Subject<number | string>();
  public documentId$: Observable<number | string> = this.subject.asObservable();

  ngOnInit() {
  this.documentId$.subscribe(value => {
    // do some stuff with value
    // when value is a string, it is NaN
    console.log(value);
  });
  this.subject.next("abc");
  this.subject.next(3);
  this.subject.next(Date.now());
  }
}

控制台中产生的输出是:

abc
3
1571682486949

推荐阅读