在编译时出现错误,显示即使从调用中调用,类从类调用时也没有属性。
这是课程:
export declare class MessageService {
private messageSource;
private clearSource;
messageObserver: import("rxjs/internal/Observable").Observable<Message | Message[]>;
clearObserver: import("rxjs/internal/Observable").Observable<string>;
public add(message: Message): void;
public addAll(messages: Message[]): void;
clear(key?: string): void;
}
这就是我从组件中调用它的地方:
showSuccess(details) {
this.messageService.add({ severity: 'success', life: 5000, summary: 'Success Message', detail: details });
}
带有警告。
ERROR in C:/Users/..../webapp/app/entities/asset/asset-update.component.ts(555,29):
TS2339: Property 'add' does not exist on type 'MessageService'.
这是messageService.js:
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
Object.defineProperty(exports, "__esModule", { value: true });
var core_1 = require("@angular/core");
var rxjs_1 = require("rxjs");
var MessageService = /** @class */ (function () {
function MessageService() {
this.messageSource = new rxjs_1.Subject();
this.clearSource = new rxjs_1.Subject();
this.messageObserver = this.messageSource.asObservable();
this.clearObserver = this.clearSource.asObservable();
}
MessageService.prototype.add = function (message) {
if (message) {
this.messageSource.next(message);
}
};
MessageService.prototype.addAll = function (messages) {
if (messages && messages.length) {
this.messageSource.next(messages);
}
};
MessageService.prototype.clear = function (key) {
this.clearSource.next(key || null);
};
MessageService = __decorate([
core_1.Injectable()
], MessageService);
return MessageService;
}());
exports.MessageService = MessageService;
//# sourceMappingURL=messageservice.js.map
答案 0 :(得分:0)
如果这是常规类,那么您需要像这样实例化它:
public messageService: MessageService = new MessageService();
如果这是用@Injcetable()装饰的服务,则需要将该服务注册到模块,并通过在组件的构造函数中提供它来使用它,如下所示:
constructor(private messageService: MessageService) {...}
,然后将显示所有公共类的属性。
编辑: 也许您应该在MessageService类中实现add方法的实现。现在看起来就像这样:
public add(message: Message): void;
相反,您应该尝试:
public add(message: Message): void {
// do something with you message like this...
this.messages.push(message);
}