小编elz*_*zoy的帖子

如果不检查{{object.field}}是否存在则会出错

我有一个关于检查对象中是否存在某个字段的问题.

我想打印用户拥有的所有类别,所以我正在做这样的事情:

  <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)

那一切都没问题.

我做错了什么或者我每次都要检查一下吗?你有过这样的问题吗?

variables null properties angular

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

Angular2将字符串解析为html

我正在导入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来交叉它.谢谢

html parsing angular

39
推荐指数
1
解决办法
2万
查看次数

后端的Angular-CLI代理不起作用

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,一切正常.在后端方面没有什么可以寻找的.

proxy angular-cli angular

35
推荐指数
5
解决办法
4万
查看次数

Angular2文件输入onchange

我有输入文件(没有提交 - 典型的输入文件).我想在选择文件时调用一些函数.

示例:我单击"选择文件" - >选择文件 - >现在系统检测到更改并调用某些功能打印所有这些文件信息(例如图像名称).

我不能在输入文件上使用ngModel,对吗?怎么做?

upload file angular

17
推荐指数
3
解决办法
4万
查看次数

如何在静态方法或自定义类中注入HttpClient?

我想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)

这是尝试在静态服务方法中手动注入客户端.不行.我很好奇如何做到这一点或如何在普通方法中注入客户端,但在一个不是组件的类中.

inject typescript angular

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

Firebase - 用户没有displayName

我可以在Firebase控制台中添加用户 - > Auth,但除了为他们设置电子邮件和密码之外,我无能为力.

我能以某种方式为他们设置displayName吗?

firebase firebase-authentication

8
推荐指数
2
解决办法
1万
查看次数

前端和后端的不同端口.如何提出要求?

使用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.

port express angular

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

Angular2 http.post和undefined req.body

我从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)

post json http node.js angular

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

Angular2 maxLength for textarea作为变量

要设置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)

我问,因为那不起作用.

variables textarea angular

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

Firebase Angularfire2检查数据库中是否存在用户

我有一个包含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)

这将为新用户添加不应该做的事情.为什么第二次订阅函数遍历每一行?怎么解决?

firebase firebase-realtime-database angularfire2 angular

6
推荐指数
1
解决办法
5971
查看次数