我正在使用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)
只是想知道如何实现此功能?任何输入?
我正在开发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 …
我正在研究这个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中,我正在做以下事情: …
是什么方法在打字稿中我可以得到一个对象的长度:
像这样的东西:
说我有一个对象:
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个元素.
任何输入?
我正在阅读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) 我正在尝试使用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)
我想将数据加载为字符串.任何输入?
我试图使用下面的代码使用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 ---普山)
只显示一次,但在控制台上它无限运行如下:
我想每次迭代只调用一次这个方法.
任何输入?
我正在为我的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)
但仍然没有取得任何成功.
任何输入?
谢谢
我有这个变量命名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创建节点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中执行此操作?
谢谢