angular - 为什么我会收到 "Subscribe is not a function"错误?

标签 angular rxjs subscribe

我有一个组件允许用户从端口列表中选择一个选项。做出选择后,他们单击“连接端口”按钮。这会调用一个服务来存储选定的端口,以便它可以存储为一个字符串。

Screenshot of the UI for this step.

我收到的控制台日志显示组件已成功调用服务并按预期进行存储。但是,在任何其他组件中,如果我尝试通过订阅调用该服务;我收到错误。

港口服务

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

export interface Port {
  portName: String;
}

@Injectable({
   providedIn: 'root'
})
export class PortService {

activePort;

constructor() { }

setPort(port) {
  console.log('The port: ', port);
  this.activePort = port;
}

getPort(): Observable<Port> {
  console.log('The port for the application runtime: ', this.activePort);
   return this.activePort;
  }
}

应用组件

import { Component, OnInit } from '@angular/core';
import { } from 'electron';
import * as Serialport from 'serialport';
import { SerialService } from './serial.service';
import { PortService, Port } from './core/port.service';
import { Observable } from 'rxjs';

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

  title = 'electron-angular-serialport';
  collapsed = false;
  connectedPort;

  constructor(private serial: SerialService, private port: PortService) {
    let isElectron: boolean = window && window['process'] && window['process'].type;

    if (isElectron) {
      let serialport: typeof Serialport = window['require']('serialport');
      let app: Electron.App = window['require']('electron').remote;
      console.log(serialport, app, window['process']);
    }
  }

  ngOnInit() {
    this.getPort();
  }

  getPort() {
    console.log('Getting Port');
    this.port.getPort().subscribe( data => this.connectedPort = data);
  }
}

我真的希望我可以存储这个字符串"/dev/tty.usbmodem14201"。这样我就可以在整个应用程序中使用它。

最佳答案

您的setPort 没有将端口设置为Observable,请尝试将值转换为Observable

import {of} from 'rxjs'
...
setPort(port) {
  console.log('The port: ', port);
  this.activePort = of(port);
}

关于angular - 为什么我会收到 "Subscribe is not a function"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54000783/

相关文章:

html - 复制粘贴下拉数据从excel到 Angular Material 表(或导入excel)并将其转换为下拉

javascript - 我想使用 rxjs subject 来检测多个组件中的值变化。但它只显示改变它的组件的变化

rxjs - fromEvent 运算符与 "onload"事件(feat.动态创建的图像元素)

angular - 在 Angular 项目中使用 Jasmine 进行单元测试订阅方法

android - iOS 中是否有类似 BroadcastReceivers 的东西?

http - Angular 2 - 检查来自订阅的服务器错误

html - 调整屏幕大小时,bootstrap 4 导航栏消失

angular - 如何从现有的 Angular cli 项目中删除所有规范文件

node.js - 使用 Webpack 构建 Angular 2 for NPM 包

javascript - 如何使用 rxjs 有条件地缓冲?