我已经写了记录器服务,但是有一个我不明白的错误。
这是代码的一部分:
import { Injectable } from "@angular/core";
@Injectable()
export class LoggerService {
private _log: Function;
constructor() {
this._log = console.log;
this.blockDefaultConsoleMethods();
}
public log(...args) {
this._log(args);
}
private blockDefaultConsoleMethods() {
console.log = console.info = console.warn = console.error = () => null;
}
}
一个错误:
TypeError: Illegal invocation
主要思想是弃用默认控制台方法
最佳答案
像这样直接调用console.log
是行不通的。您可以尝试像这样调用它:
import { Injectable } from "@angular/core";
@Injectable()
export class LoggerService {
private _log: Function;
constructor() {
this._log = console.log;
this.blockDefaultConsoleMethods();
}
public log(...args) {
Function.prototype.apply.call(this._log, console, args); // <--- change here
}
private blockDefaultConsoleMethods() {
console.log = console.info = console.warn = console.error = () => null;
}
}
使用Plunker作为示例用法
关于javascript - 用angular2制作了我自己的记录器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37875437/