Ionic2 添加自定义扩展方法

Ionic2 add custom extension method

我想为原生 String 类型添加扩展方法。

字符串-extension.ts:

interface String {
    toSlug(): string;
}

String.prototype.toSlug = function () {
    var str = this.toLowerCase();
    str = str.replace(/à|á|ạ|ả|ã|â|ầ|ấ|ậ|ẩ|ẫ|ă|ằ|ắ  |ặ|ẳ|ẵ/g, "a");
    str = str.replace(/è|é|ẹ|ẻ|ẽ|ê|ề|ế|ệ|ể|ễ/g, "e");
    str = str.replace(/ì|í|ị|ỉ|ĩ/g, "i");
    str = str.replace(/ò|ó|ọ|ỏ|õ|ô|ồ|ố|ộ|ổ|ỗ|ơ|ờ|ớ  |ợ|ở|ỡ/g, "o");
    str = str.replace(/ù|ú|ụ|ủ|ũ|ư|ừ|ứ|ự|ử|ữ/g, "u");
    str = str.replace(/ỳ|ý|ỵ|ỷ|ỹ/g, "y");
    str = str.replace(/đ/g, "d");
    str = str.replace(/!|@|%|\^|\*|\(|\)|\+|\=|\<|\>|\?|\/|,|\.|\:|\;|\'| |\"|\&|\#|\[|\]|~|$|_/g, " ");
    str = str.replace(/-+-/g, " ");
    str = str.replace(/^\-+|\-+$/g, "");
    return str.trim();
}

用法:

public slug: string = "UTF String".toSlug();

VS Code 建议工作正常,没有任何问题。但是在 ionic serve 之后抛出 String.toSlug is not a function

以下是我的 CLI 版本:

Cordova CLI: 6.4.0 Ionic Framework Version: 2.0.0-rc.3 Ionic CLI Version: 2.1.13 Ionic App Lib Version: 2.1.7 Ionic App Scripts Version: 0.0.45 ios-deploy version: Not installed ios-sim version: Not installed OS: Windows 10 Node Version: v6.9.1

如有任何帮助,我们将不胜感激。谢谢

我找到了答案。解决方案是将扩展文件导入 app.module.ts:

import '../extentions/string.ts';
import '../extensions/array.ts';
...

将原型改成这个 (angular 2+):

String.prototype.toSlug = function (this:string) { ... }

问题是 ionic-app-script 模块在编译时不包含文件。