小编Bhu*_*kar的帖子

在angular2中有没有替代ng-disabled?

我正在使用angular2进行开发,并想知道ng-disabled在angular2中是否有任何替代方案.

对于前者 下面的代码是angularJS:

<button ng-disabled="!nextLibAvailable" ng-click="showNext('library')" class=" btn btn-info btn-xs" title="Next Lib >> {{libraries.name}}">
    <i class="fa fa-chevron-right fa-fw"></i>
</button>
Run Code Online (Sandbox Code Playgroud)

只是想知道如何实现此功能?任何输入?

angular-directive angular

135
推荐指数
4
解决办法
16万
查看次数

如何在angular2中手动抛出可观察的错误?

我正在开发angular2 app,我正在通过HTTp进行休息,如下所示:

login(email, password) {
    let headers = new Headers();
    headers.append('Content-Type', 'application/x-www-form-urlencoded');
    let options = new RequestOptions({ headers: headers });
    let body = `identity=${email}&password=${password}`;
    return this.http.post(`${this._configService.getBaseUrl()}/login`, body, options)
    .map((res: any) => {
        let response: any = JSON.parse(res._body);
        if (response.success == 0) {
          Observable.throw(response);  // not working
        } else if (response.success == 1) {
          console.log('success');
          localStorage.setItem('auth_token', 'authenticated');
          this.loggedIn = true;
          return response;
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

基本上我希望我的组件在我的订阅调用中获得响应和错误.

this._authenticateService.login(this.loginObj['identity'],this.loginObj['password']).subscribe(
  (success)=>{      
    this.credentialsError=null;  
    this.loginObj={};  
    this._router.navigate(['dashboard']);    
  },
  (error)=>{
    console.log(error);        
    this.credentialsError=error;     
  }
);
Run Code Online (Sandbox Code Playgroud)

但我的api总是返回成功,因为它以这种方式定义.

所以我想知道如何抛出错误消息response.success …

javascript typescript angular2-observables angular

45
推荐指数
6
解决办法
6万
查看次数

Angular 2:将数据传递给路由?

我正在研究这个angular2项目,我用它ROUTER_DIRECTIVES来从一个组件导航到另一个组件.

有2个组件.即PagesComponent&DesignerComponent.

我想从PagesComponent导航到DesignerComponent.

到目前为止它的路由正确但我需要传递pageObject,因此设计人员可以加载该页面对象本身.

我尝试使用RouteParams但它获取页面对象undefined.

下面是我的代码:

pages.component.ts

import {Component, OnInit ,Input} from 'angular2/core';
import { GlobalObjectsService} from './../../shared/services/global/global.objects.service';
import { ROUTER_DIRECTIVES, RouteConfig } from 'angular2/router';
import { DesignerComponent } from './../../designer/designer.component';
import {RouteParams} from 'angular2/router';

@Component({
    selector: 'pages',    
    directives:[ROUTER_DIRECTIVES,],
    templateUrl: 'app/project-manager/pages/pages.component.html'
})
@RouteConfig([
  { path: '/',name: 'Designer',component: DesignerComponent }      
])

export class PagesComponent implements OnInit {
@Input() pages:any;
public selectedWorkspace:any;    
constructor(private globalObjectsService:GlobalObjectsService) {
    this.selectedWorkspace=this.globalObjectsService.selectedWorkspace;                    
}
ngOnInit() { }   
}
Run Code Online (Sandbox Code Playgroud)

在html中,我正在做以下事情: …

javascript typescript angular2-routing angular

35
推荐指数
2
解决办法
11万
查看次数

打字稿中的对象长度?

是什么方法在打字稿中我可以得到一个对象的长度:

像这样的东西:

说我有一个对象:

public customer:any={
     "name":"Bhushan",
     "eid":"879546",
     "dept":"IT"
}
Run Code Online (Sandbox Code Playgroud)

现在我试图在打字稿中获得它的长度.

即.当我这样做时customer.length(),我应该能够获得值3,因为它有3个元素.

我试过Object.getOwnPropertyNames(customer.value)但它返回2而我的对象中有3个元素.

任何输入?

javascript typescript angular

30
推荐指数
2
解决办法
5万
查看次数

tsconfig.json的目的是什么?

我正在阅读angular2推荐并找到了这个tsconfig.json.我想知道以下参数是什么意思?

{
    "compilerOptions": {
    "target": "es5",
    "module": "system",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": false
    },
    "exclude": [
    "node_modules"
    ]
}
Run Code Online (Sandbox Code Playgroud)

json typescript tsconfig angular

29
推荐指数
3
解决办法
2万
查看次数

textarea的ngModel不在angular2中工作

我正在尝试使用textarea打印json对象ngModel.

我做了以下事情:

<textarea style="background-color:black;color:white;" [(ngModel)]='rapidPage' rows="30" cols="120">                             
</textarea>
Run Code Online (Sandbox Code Playgroud)

我想在textarea中加载json对象.上面的代码是rapidPage在textarea中加载对象,但是它显示textarea值为[object Object].

宾语:

 this.rapidPage = {            
        "pageRows": [
            {
                "sections": [
                    {
                        "sectionRows": [
                            {
                                "secRowColumns": [                                       
                                ]
                            },
                            {
                                "secRowColumns": [
                                    {
                                        "colName": "users"
                                    }
                                ]
                            },
                            {
                                "secRowColumns": [
                                    {
                                        "colName": "sample"
                                    }
                                ]
                            }
                        ],
                        "width": 0
                    }
                ]
            }
        ],
        "pageName": "DefaultPage",
        "pageLayout": "DEFAULT_LAYOUT",
        "editMode": true
    };
Run Code Online (Sandbox Code Playgroud)

我想将数据加载为字符串.任何输入?

html javascript json angular

25
推荐指数
5
解决办法
7万
查看次数

*ng在angular2中运行无限循环

我试图使用下面的代码使用angular2中的键来渲染对象属性:

<ul>
    <li *ngFor="let element of componentModel | keys;let i=index">
      {{element.key}}--{{element.value}}  // 1---Bhushan...loaded only once
      <span  *ngIf="element">{{ loadProperty(i,element) }}</span>
    </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

但我在这里面临一个问题.浏览器中的输出只加载一次.但方法调用即loadProperty(i,element)在无限循环中运行.

loadProperty(i:number,element:any){       
    console.log(element.key+'========'+element.value);
    console.log(element);      
}
Run Code Online (Sandbox Code Playgroud)

表示浏览器输出

(1 ---普山)

只显示一次,但在控制台上它无限运行如下:

控制台的快照

我想每次迭代只调用一次这个方法.

任何输入?

typescript ngfor angular

20
推荐指数
1
解决办法
7318
查看次数

如何测试我的方法是否在angular2中抛出可观察的错误?

我正在为我的angular2组件创建单元测试用例.

到目前为止测试用例正确运行.

但我面临着有关异步调用的问题.

对于前者 我有以下创建新用户的方法,如果用户已经存在则会抛出错误:

onSubmit():Observable<any> {  
    this._userService.saveUser(this.user).subscribe(
        (response) => {
          this._directoryService.getDirectoryById(this.selectedDirectory._id).subscribe(
            (directory) => {                        
              this.users = directory[0].users;
            },
            (error) => {              
              return error;              
            }
          );
        },
        (error) => {                   
          return error;         
        }
     );
    return ;
}
Run Code Online (Sandbox Code Playgroud)

在我的服务中,我使用以下内容抛出错误:

if (alreadyExist) {
        let error = "user already exist in database";
        return Observable.throw(error);
}
Run Code Online (Sandbox Code Playgroud)

现在我期待这个方法抛出一个错误:

expect( function(){ app.onSubmit(); } )
    .toThrow(new Error("User already exist in database"));
Run Code Online (Sandbox Code Playgroud)

根据我的理解,这个测试用例应该是成功的,但是在我的测试用例失败后我得到了以下错误:

抛出异常的预期函数.

我尝试了多个expect块:

expect(app.onSubmit()).toThrowError(new Error("User already exist in database"));
Run Code Online (Sandbox Code Playgroud)

但仍然没有取得任何成功.

任何输入?

谢谢

javascript jasmine angular2-testing angular

14
推荐指数
1
解决办法
8286
查看次数

如何在Angular 2+模板中使用isArray()?

我有这个变量命名records,

现在我想在angular2/typescript中检查它是否是一个数组?

在AngularJS中,我曾经做过以下事情:

ng-if="selectedCol.data && !isArray(selectedCol.data)"
Run Code Online (Sandbox Code Playgroud)

但是当我想要做的时候,它不能正常工作;

*ngIf="selectedCol.model.data && !Array.isArray(selectedCol.model.data)"
Run Code Online (Sandbox Code Playgroud)

它给我下面的错误:

TypeError:无法读取未定义任何输入的属性'isArray'吗?

javascript typescript angular

11
推荐指数
3
解决办法
1万
查看次数

如何在javascript中获取redis中的所有键和值?

我正在使用javascript创建节点API.我使用redis作为我的键值存储.我在我的应用程序中创建了一个redis-client,并且能够获得特定密钥的值.

我想检索所有键及其值.到目前为止,我做到了这一点:

app.get('/jobs', function (req, res) {
    var jobs = [];
    client.keys('*', function (err, keys) {
        if (err) return console.log(err);
        if(keys){
            for(var i=0;i<keys.length;i++){
                client.get(keys[i], function (error, value) {
                    if (err) return console.log(err);
                    var job = {};
                    job['jobId']=keys[i];
                    job['data']=value;
                    jobs.push(job);
                });  
            }
            console.log(jobs);
            res.json({data:jobs});
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

但我总是得到空白阵列作为回应.

有没有办法在javascript中执行此操作?

谢谢

javascript key-value redis node.js

11
推荐指数
3
解决办法
2万
查看次数