我是打字稿新手,我正在尝试使用别人的plugin。 I have reached向他们求助,但我不确定可能需要多长时间。回购协议一年多来没有更新。
我正在尝试创建一个定义为的NotyButton:
interface NotyButton {
new(text: string,
classNames: string,
cb: Function,
attributes: any): NotyButton
}
NotyButton在NotyOptions中使用:
export interface NotyOptions {
type?: NotyType;
layout?: NotyLayout;
theme?: NotyTheme;
text?: string;
timeout?: false | number;
progressBar?: boolean;
closeWith?: ('click' | 'button')[];
animation?: {
open?: string | null | Function,
close?: string | null | Function
};
id?: false | string;
force?: boolean;
killer?: boolean | string;
queue?: string;
container?: false | string;
buttons?: NotyButton[],
callbacks?: {
beforeShow?: () => void,
onShow?: () => void,
afterShow?: () => void,
onClose?: () => void,
afterClose?: () => void,
onHover?: () => void,
onTemplate?: () => void
};
sounds?: {
sources?: string[],
volume?: number,
conditions?: string[]
};
docTitle?: {
conditions?: string[]
};
modal?: boolean,
}
NotyModel类中有一个静态方法,该方法公开一个使用lambda表达式返回NotyButton的button属性(如果我正确阅读的话)。我相信这就是我的问题所在。
class NotyModel {
static button: (text: string, classNames: string, cb: Function, attributes?: any) => NotyButton;
}
我必须在NgNoty类的create方法中将NotyOptions对象用作参数:
declare let Noty: any;
@Injectable()
export class NgNoty {
create(options: NotyOptions): NotyModel {
return new Noty(options);
}
closeAll(name?: string) {
Noty.closeAll(name);
}
setMaxVisible(count: number, name?: string) {
Noty.setMaxVisible(count, name);
}
}
我有一个组件创建,试图像这样使用NgNoty的创建方法:
this.noty.create(<NotyOptions>{
text: 'Problems Encountered',
layout: 'bottomRight',
theme: 'bootstrap-v4',
type: 'error',
buttons: [
NotyModel.button('Ok', 'btn', () => {}, null)
]
}).show();
当我使用NotyModel.button时,得到的是 NotyModel.button不是函数。
答案 0 :(得分:0)
看来ng-noty的作者可能忘记了实现NotyModel.button
。我尝试在this fork中实现它,但是我不熟悉如何测试它。尝试一下,如果它对您有用,我们中的一个可以提交拉取请求。 (请参阅this answer,了解我将npm软件包的本地修改版本添加到您的应用程序中的首选技术。)