angular.isUndefined& angular.equals in angular 2

时间:2016-07-13 05:23:56

标签: typescript angular

我刚刚开始尝试从角度1迁移到2,实际上是从离子1迁移到2,而我的第一个编译错误之一是angular.isUndefined和angular.equals未解析。

我该如何解决这个问题,提示?

namespace Utils {

export class Comparator {

    static isEmpty(obj:any):boolean {
        return obj == null || Object.keys(obj).length === 0;
    }

    static isNumberNullOrZero(obj:number):boolean {
        return obj == null || obj === 0;
    }

    static equals(obj1:any, obj2:any):boolean {
        return angular.equals(obj1, obj2); // <== here angular unresolved
    }

    static isStringEmpty(str:string):boolean {
        return !str || 0 === str.length;
    }

    static isStringBlank(str:string):boolean {
        return !str || /^\s*$/.test(str);
    }

    static isBiggerThanZero(num:number):boolean {
        return num != null && !angular.isUndefined(num) && num > 0; // <== here angular unresolved
    }

  }
}

4 个答案:

答案 0 :(得分:3)

在您的情况下,您只需将angular.isUndefined(num)替换为num === undefined

对象相等有点棘手。存在包含这种功能的库,例如, Lodash

答案 1 :(得分:2)

您可能已经修复了它,但如果您想知道为什么这些方法不在angular2 中,这就是原因。

您可能知道,框架提供的角度团队前缀对象名称为$。这是angular1中的命名约定,以避免与应用程序代码冲突。

事实证明,他们还需要实现一些像equals这样的方法来忽略那些前缀属性。这是angular.equals所做的事情之一。如果使用angular.equals比较对象,则会忽略这些前缀。

angular.equals({a: 1}, {a: 1}) === true
angular.equals({a: 1}, {a: 1, $a: 2}) === true

在此post

中查找更多内容

答案 2 :(得分:0)

angular.isUndefined替换为isUndefined,并为您的代码添加以下函数

```的js

function isUndefined(o) {
    return typeof o === 'undefined';
}

```

答案 3 :(得分:-2)

Angular2没有isUndefined

您可以简单地用

替换angular.isUndefined(num)
if (!num) {
}