angular - 尝试访问我的服务中的功能时出错
问题描述
我正在尝试使用一些 socket.io 以角度实现 Web 应用程序。我用ngx-socket-io
.
我有这样的服务:
import { Socket } from 'ngx-socket-io';
import { Injectable } from '@angular/core';
import { map } from 'rxjs/operators';
@Injectable()
export class IoRequestService {
constructor(private socket: Socket) { }
sendMessage(msg: string) {
this.socket.emit("message", msg);
}
getMessage() {
return this.socket
.fromEvent("message")
.pipe(map((data:any) => data.msg));
}
}
然后我尝试在这样的组件中使用它
import { Component, OnInit } from '@angular/core';
import { Transaction } from '../models/Transaction.model'
import { IoRequestService } from '../services/ioRequest.service'
@Component({
selector: 'app-transactions',
templateUrl: './transactions.component.html',
styleUrls: ['./transactions.component.scss']
})
export class TransactionsComponent implements OnInit {
transactions: Transaction[] = [];
constructor() { }
ngOnInit(): void {
}
send() {
IoRequestService.sendMessage("txt");
}
}
但我有一个错误:
Property 'sendMessage' does not exist on type 'typeof IoRequestService'.
你知道为什么会这样吗?
解决方案
由于IoRequestService
带有注释,因此@Injectable()
您需要在组件中注入其实例:
constructor(private service: IoRequestService) {
}
send() {
this.service.sendMessage("txt");
}
还添加IoRequestService
您的AppModule
:
@NgModule({
...
providers: [
IoRequestService
]
...
})
export class AppModule {
}
推荐阅读
- javascript - Ajax 请求 PrototypeJS
- javascript - CSS中的动态响应网格样式容器
- mongodb - MongoDB中的索引
- angular - 使用 --prod 构建时链接无效
- ios - 记录错误报告的附加信息
- css -
- 应用 display:none 时 img 和 description 消失
- python - Python - MySQL“列数与第 1 行的值计数不匹配”
- c++ - 英特尔 C++ 编译器 19.0 测试版中删除了对英特尔® 图形技术的卸载支持
- javascript - Prettier.js confic 如何转换任何子文件夹中的任何 js 文件
- ocl - 为什么这个 ATL 助手是错误的?