标签: angular

例外:无法绑定到'ngFor',因为它不是已知的本机属性

我究竟做错了什么?

import {bootstrap, Component} from 'angular2/angular2'

@Component({
  selector: 'conf-talks',
  template: `<div *ngFor="talk of talks">
     {{talk.title}} by {{talk.speaker}}
     <p>{{talk.description}}
   </div>`
})
class ConfTalks {
  talks = [ {title: 't1', speaker: 'Brian', description: 'talk 1'},
            {title: 't2', speaker: 'Julie', description: 'talk 2'}];
}
@Component({
  selector: 'my-app',
  directives: [ConfTalks],
  template: '<conf-talks></conf-talks>'
})
class App {}
bootstrap(App, [])
Run Code Online (Sandbox Code Playgroud)

错误是

EXCEPTION: Template parse errors:
Can't bind to 'ngFor' since it isn't a known native property
("<div [ERROR ->]*ngFor="talk of talks">
Run Code Online (Sandbox Code Playgroud)

typescript angular2-directives ngfor angular

260
推荐指数
8
解决办法
14万
查看次数

没有HttpClient的提供者

从角度4.4升级到5.0并且在将所有HttpModule和Http更新为HttpClientModule后,我开始出现此错误.

我还再次添加了HttpModule,以确保它不是由于一些依赖,但它没有解决问题

在app.module中,我已经正确设置了

import { HttpModule } from '@angular/http';
import { HttpClientModule, HttpClient } from '@angular/common/http';
.
.
.
@NgModule({
    imports: [
        BrowserModule,
        HttpClientModule,
        HttpModule,
        BrowserAnimationsModule,
        FormsModule,
        AppRoutingModule,
.
.
.
Run Code Online (Sandbox Code Playgroud)

我不知道这个错误来自何处,或者我不知道如何弄清楚它的内在.我也有一个警告(也把它放在下面)也许是相关的.

Error: StaticInjectorError[HttpClient]: 
  StaticInjectorError[HttpClient]: 
    NullInjectorError: No provider for HttpClient!
    at _NullInjector.get (vendor.js?v=mekBM8IVBK72-MIZOVSTJizGi_TD_xK3uhPOCRlEHwg:5665)
    at resolveToken (vendor.js?v=mekBM8IVBK72-MIZOVSTJizGi_TD_xK3uhPOCRlEHwg:5953)
    at tryResolveToken (vendor.js?v=mekBM8IVBK72-MIZOVSTJizGi_TD_xK3uhPOCRlEHwg:5895)
    at StaticInjector.get (vendor.js?v=mekBM8IVBK72-MIZOVSTJizGi_TD_xK3uhPOCRlEHwg:5766)
    at resolveToken (vendor.js?v=mekBM8IVBK72-MIZOVSTJizGi_TD_xK3uhPOCRlEHwg:5953)
    at tryResolveToken (vendor.js?v=mekBM8IVBK72-MIZOVSTJizGi_TD_xK3uhPOCRlEHwg:5895)
    at StaticInjector.get (vendor.js?v=mekBM8IVBK72-MIZOVSTJizGi_TD_xK3uhPOCRlEHwg:5766)
    at resolveNgModuleDep (vendor.js?v=mekBM8IVBK72-MIZOVSTJizGi_TD_xK3uhPOCRlEHwg:15328)
    at _createClass (vendor.js?v=mekBM8IVBK72-MIZOVSTJizGi_TD_xK3uhPOCRlEHwg:15373)
    at _createProviderInstance$1 (vendor.js?v=mekBM8IVBK72-MIZOVSTJizGi_TD_xK3uhPOCRlEHwg:15339)
Run Code Online (Sandbox Code Playgroud)

警告信息:

./node_modules/@angular/Common/esm5/http.js
There are multiple modules with names that only …
Run Code Online (Sandbox Code Playgroud)

angular

257
推荐指数
20
解决办法
28万
查看次数

(更改)vs(ngModelChange)的角度

Angular 1不接受onchange事件,但只接受onchange()事件.

另一方面,Angular 2接受两者ng-change()(change)事件,它们似乎都在做同样的事情.

有什么不同?

哪一个最适合表现?

ngModelChange:

<input type="text" pInputText class="ui-widget ui-text"
    (ngModelChange)="clearFilter()" placeholder="Find"/>
Run Code Online (Sandbox Code Playgroud)

变化:

<input type="text" pInputText class="ui-widget ui-text" 
    (change)="clearFilter()" placeholder="Find"/>
Run Code Online (Sandbox Code Playgroud)

html javascript typescript angular angular-ngmodelchange

255
推荐指数
5
解决办法
37万
查看次数

Angular 4 - "无法绑定到'ngModel',因为它不是'input'的已知属性"错误

我正在使用Angular 4,我在控制台中收到错误:

无法绑定到'ngModel',因为它不是'input'的已知属性

我该如何解决这个问题?

angular-ngmodel angular

248
推荐指数
9
解决办法
26万
查看次数

将lodash导入angular2 + typescript应用程序

我很难尝试导入lodash模块.我使用npm + gulp设置我的项目,并继续击中同一面墙.我尝试过常规的lodash,还有lodash-es.

lodash npm包:(包根文件夹中有一个index.js文件)

import * as _ from 'lodash';    
Run Code Online (Sandbox Code Playgroud)

结果是:

error TS2307: Cannot find module 'lodash'.
Run Code Online (Sandbox Code Playgroud)

lodash-es npm包:(在lodash.js中有一个defaut导出我的包根文件夹)

import * as _ from 'lodash-es/lodash';
Run Code Online (Sandbox Code Playgroud)

结果是:

error TS2307: Cannot find module 'lodash-es'.   
Run Code Online (Sandbox Code Playgroud)

gulp任务和webstorm都报告了同样的问题.

有趣的是,这不会返回错误:

import 'lodash-es/lodash';
Run Code Online (Sandbox Code Playgroud)

......但当然没有"_"......

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

我的gulpfile.js:

var gulp = require('gulp'),
    ts = require('gulp-typescript'),
    uglify = require('gulp-uglify'),
    sourcemaps = require('gulp-sourcemaps'),
    tsPath = …
Run Code Online (Sandbox Code Playgroud)

javascript typescript lodash es6-module-loader angular

246
推荐指数
8
解决办法
16万
查看次数

Angular 2在Route Change上滚动到顶部

在我的Angular 2应用程序中,当我向下滚动页面并单击页面底部的链接时,它确实会更改路径并将我带到下一页但它不会滚动到页面顶部.结果,如果第一页很长而第二页的内容很少,则给人的印象是第二页缺少内容.由于只有当用户滚动到页面顶部时内容才可见.

我可以在组件的ngInit中将窗口滚动到页面顶部但是,有没有更好的解决方案可以自动处理我的应用程序中的所有路径?

typescript angular2-directives angular2-template angular2-routing angular

246
推荐指数
12
解决办法
12万
查看次数

如何在Angular 2 + CLI项目中添加font-awesome

我正在使用Angular 2+和Angular CLI.

如何为我的项目添加font-awesome?

webpack angular-cli angular

245
推荐指数
12
解决办法
17万
查看次数

如何将URL参数(查询字符串)传递给Angular上的HTTP请求?

大家好我在Angular上创建HTTP请求,但我不知道如何添加url参数(查询字符串).

this.http.get(StaticSettings.BASE_URL).subscribe(
  (response) => this.onGetForecastResult(response.json()),
  (error) => this.onGetForecastError(error.json()),
  () => this.onGetForecastComplete()
);
Run Code Online (Sandbox Code Playgroud)

现在我的StaticSettings.BASE_URL就像一个没有查询字符串的网址,如:http://atsomeplace.com/ 但我希望它是http://atsomeplace.com/?var1=val1&var2=val2

哪个var1和var2适合我的Http请求对象?我想像对象一样添加它们.

{
  query: {
    var1: val1,
    var2: val2
  }
}
Run Code Online (Sandbox Code Playgroud)

然后只是Http模块完成工作将其解析为URL查询字符串.

http typescript angular

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

ExpressionChangedAfterItHasBeenCheckedError解释

请向我解释为什么我一直收到这个错误: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked.

显然,我只是在开发模式下获得它,它不会在我的生产版本中发生,但它非常烦人,而我根本不理解在我的开发环境中出现错误的好处 - 不会出现在prod上 - - 可能是因为我缺乏理解.

通常,修复很容易,我只是将错误导致代码包装在setTimeout中,如下所示:

setTimeout(()=> {
    this.isLoading = true;
}, 0);
Run Code Online (Sandbox Code Playgroud)

或者使用如下构造函数强制检测更改constructor(private cd: ChangeDetectorRef) {}::

this.isLoading = true;
this.cd.detectChanges();
Run Code Online (Sandbox Code Playgroud)

但为什么我经常遇到这个错误?我想了解它,以便将来可以避免这些hacky修复.

angular2-changedetection angular2-databinding angular

243
推荐指数
18
解决办法
15万
查看次数

表达式___在检查后发生了变化

为什么这个组件在这个简单的插件中

@Component({
  selector: 'my-app',
  template: `<div>I'm {{message}} </div>`,
})
export class App {
  message:string = 'loading :(';

  ngAfterViewInit() {
    this.updateMessage();
  }

  updateMessage(){
    this.message = 'all done loading :)'
  }
}
Run Code Online (Sandbox Code Playgroud)

投掷:

例外:App @ 0:5'中的表达式'我'{{message}}在检查后发生了变化.上一个值:'我正在加载:('.当前值:'我已经完成了加载:)'在[我是{{message}}在App @ 0:5中]

什么时候我正在做的是在我的视图启动时更新一个简单的绑定?

typescript angular

241
推荐指数
12
解决办法
16万
查看次数