我有一个关于检查对象中是否存在某个字段的问题.
我想打印用户拥有的所有类别,所以我正在做这样的事情:
<ul *ngIf="user.categories.length > 0" *ngFor="#category of user.categories">
<li>
{{category.name}}
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
原因?所有数据都是正确打印的,但我在Web控制台中遇到如下错误:
Cannot read property 'name' of null
Run Code Online (Sandbox Code Playgroud)
但当我做类似的事情时:
<ul *ngIf="user.categories.length > 0" *ngFor="#category of user.categories">
<li *ngIf="category">
{{category.name}}
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
那一切都没问题.
我做错了什么或者我每次都要检查一下吗?你有过这样的问题吗?
我正在导入rss项目,在描述中有很多HTML代码(链接,段落等等).当我在组件的视图中查看它时:
{{rss.description}}
Run Code Online (Sandbox Code Playgroud)
网站输出如下:
<a href="http://link.com">Something</a> <p>Long text</p>
Run Code Online (Sandbox Code Playgroud)
如何快速轻松地将其解析为HTML?我不想用jQuery来交叉它.谢谢
https://github.com/angular/angular-cli#proxy-to-backend这里是一个如何代理后端的指令.我一步一步做了所有事情仍然没有代理请求.
8080 - 我的Express后端4200 - 我的Angular2前端
在Angular2项目中,我的文件proxy.cons.json内容如下:
{
"/api": {
"target": "http://localhost:8080",
"secure": false
}
}
Run Code Online (Sandbox Code Playgroud)
在Angular2 package.json中,我将start过程更改为"start": "ng serve --proxy-config proxy.conf.json"
当我输入指挥官内部npm start时,我可以看到Proxy created: /api -> http://localhost:8080.好吧,到目前为止我觉得很好.
我正在尝试发送请求(Angular2)
constructor(private http: Http) {
this.getAnswer();
}
getAnswer(): any {
return this.http.get("/api/hello")
.subscribe(response => {
console.log(response);
})
}
Run Code Online (Sandbox Code Playgroud)
我收到了一个错误http://localhost:4200/api/hello 404 (Not Found).我们可以看到,没有任何代理.为什么?我做错什么了吗?
要清楚.当我手动去http://localhost:8080/hello,一切正常.在后端方面没有什么可以寻找的.
我有输入文件(没有提交 - 典型的输入文件).我想在选择文件时调用一些函数.
示例:我单击"选择文件" - >选择文件 - >现在系统检测到更改并调用某些功能打印所有这些文件信息(例如图像名称).
我不能在输入文件上使用ngModel,对吗?怎么做?
我想HttpClient在静态方法或类中使用angular (在类中它不能被定义为构造函数参数).
我尝试过类似的东西:
export class SomeNotInjectableService {
static doSomething() {
const injector = Injector.create({
providers: [{provide: HttpClient, deps:[]}]
});
const httpClient: HttpClient = injector.get(HttpClient);
httpClient.request(...); // error Cannot read property 'handle' of undefined
}
}
Run Code Online (Sandbox Code Playgroud)
这是尝试在静态服务方法中手动注入客户端.不行.我很好奇如何做到这一点或如何在普通方法中注入客户端,但在一个不是组件的类中.
我可以在Firebase控制台中添加用户 - > Auth,但除了为他们设置电子邮件和密码之外,我无能为力.
我能以某种方式为他们设置displayName吗?
使用Angular-CLI作为前端.4200端口
使用Express作为后端.8080端口
目录看起来像:
Application
- backend
- ...Express architecture
- frontend
-...Angular2 architecture
Run Code Online (Sandbox Code Playgroud)
所以我正在运行两个项目,两个指挥官,一个用于前端,第二个用于后端.node app.jsfor backend(8080),ng servefor frontent(4200).
假设我在后端有一个返回一些字符串的图层.
app.get('/hello', function(req, res) {
res.send("Hello!");
}
Run Code Online (Sandbox Code Playgroud)
如何从前端到后端发出请求并获取该字符串?我不想知道我应该如何使用Angular2,因为这不是重点.我问,我应该使用什么技术来连接不同端口上的这两个(前端和后端)端.如果我只是运行它们并从前端发出请求,我将收到一个错误,因为它找不到/hellourl.
我从http.post接收json时遇到问题.让我们说清楚一点:这是我的组件文件:
import {Component} from 'angular2/core'
import {Http, HTTP_PROVIDERS, Headers} from 'angular2/http'
@Component({
selector: 'login-form',
template: `
<form (ngSubmit)="onSubmit()">
<button type="submit">Wyslij</button>
</form>
`
})
export class LoginFormComponent {
constructor(public http: Http) { }
onSubmit() {
var headers = new Headers();
headers.append('Content-Type', 'application/x-www-form-urlencoded');
var data = JSON.stringify({
login: "zupa",
});
this.http.post('http://localhost:8080/send', data, {headers: headers})
.subscribe();
}
}
Run Code Online (Sandbox Code Playgroud)
我的server.js文件
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser'); …Run Code Online (Sandbox Code Playgroud) 要设置textarea的最大字母数,我们通过编写来实现:
<textarea maxLength="50"></textarea>
但是,我可以做下面的事吗?有什么办法吗?
import { Component } from '@angular/core';
@Component({
moduleId: module.id,
selector: 'app-create-offer-page',
template: `
<textarea maxLength="textareaLength"></textarea>
`
})
export class CreateOfferPageComponent {
textareaLength: number = 50;
}
Run Code Online (Sandbox Code Playgroud)
我问,因为那不起作用.
我有一个包含2个对象的数据库.它看起来像这样:
users
- KEY
login: "xexe"
password: "123"
- KEY
login: "dede"
password: "123"
Run Code Online (Sandbox Code Playgroud)
现在我正在检查数据库中是否存在用户
constructor(private af: AngularFire) {
this.users = af.database.list('/users');
}
registerUser(login: string, password: string) {
this.af.database.list('/users', {
query: {
orderByChild: 'login',
equalTo: login
}
}).subscribe(response => {
if(response.length === 0) {
console.log("User does not exist");
//here i will add a user
} else {
console.log("Users exists");
}
})
}
Run Code Online (Sandbox Code Playgroud)
有什么问题?
让我们尝试使用"dede"登录注册用户(用户应该存在)
当我第一次单击提交按钮时,控制台显示:
Users exists- >嗯,这很好.
问题是当我第二次点击提交时(没有刷新网页)
然后console.log向我显示了两条消息
User does not exist
User exists
Run Code Online (Sandbox Code Playgroud)
这将为新用户添加不应该做的事情.为什么第二次订阅函数遍历每一行?怎么解决?