我有一个可注射的服务来显示吐司消息。我想在另一个只有一些导出函数的打字稿文件中使用它。
这是我的服务
import { Injectable } from "@angular/core";
import { NotifierService } from "angular-notifier";
@Injectable({
providedIn: "root"
})
export class Notifier {
notifier: NotifierService;
constructor(private notifierService: NotifierService) {
this.notifier = this.notifierService;
}
notifiy(type, message) {
this.notifierService.notify(type, message);
}
}
这是导出的函数,其中我需要根据条件显示一些吐司。这包含在另一个打字稿文件中。
export function validateFile(file) {
let type = getFileType(file.name);
let size = file.size;
switch (type) {
case "image": {
if (size > 10000000) {
return false;
} else {
return true;
}
}
case "audio": {
if (size > 200000000) {
return false;
} else {
return true;
}
}
case "video": {
if (size > 300000000) {
return false;
} else {
return true;
}
}
case "compress": {
if (size > 200000000) {
return false;
} else {
return true;
}
}
default: {
return false;
}
}
}
如何在此功能中使用通告程序服务的notify方法?
答案 0 :(得分:-1)
import { Injectable } from "@angular/core";
@Injectable({
providedIn: "root"
})
export class NotifierService {
notifySubject$ = new Subject<{}>();
notify(type, message) {
this.notifySubject.next({type, message}));
}
subscribeToNotifications() {
return this.notifySubject.asObservable();
}
}
==================
export class SomeClass {
constructor(private notifier: NotifierService) {}
export function validateFile(file) {
let type = getFileType(file.name);
let size = file.size;
switch (type) {
case "image": {
this.notifier.notify(type, 'some message')
if (size > 10000000) {
return false;
} else {
return true;
}
}
case "audio": {
this.notifier.notify(type, 'some message')
if (size > 200000000) {
return false;
} else {
return true;
}
}
case "video": {
this.notifier.notify(type, 'some message')
if (size > 300000000) {
return false;
} else {
return true;
}
}
case "compress": {
this.notifier.notify(type, 'some message')
if (size > 200000000) {
return false;
} else {
return true;
}
}
default: {
return false;
}
}
}
}