已经和Angular v1合作已经有一段时间了,自从Angular v2进入测试版以来,我一直在玩这个游戏.
现在我已经有了这段代码,但无法让它工作,真的不知道为什么.不知何故,当我打印{{profileUser | json}}一切正常(profileUser是一个对象).
但是当我想打印该对象的子项时(例如{{profileUser.name}}或{{profileUser.name.firstName}}),Angular会抛出以下错误:
EXEPTION: TypeError: undefined is not an object (evaluating 'l_profileUser0.name') in [ {{profileUser.name}} in ProfileComponent@4:11.
这对我来说真的很混乱,应该只是最简单的事情之一..刚开始使用TypeScript btw ..
这是一些代码 - ProfileService.ts:
import { Injectable } from 'angular2/core';
import { Headers } from 'angular2/http';
import { API_PREFIX } from '../constants/constants';
import { AuthHttp } from 'angular2-jwt/angular2-jwt';
import 'rxjs/add/operator/map';
@Injectable()
export class ProfileService {
API_PREFIX = API_PREFIX;
constructor(private _authHttp:AuthHttp) {
}
getProfileData(username:string):any {
return new Promise((resolve, reject) => …Run Code Online (Sandbox Code Playgroud) 我试图理解@Injectable()在角度2 中添加服务中装饰的必要性.
从文档:https://angular.io/docs/ts/latest/guide/dependency-injection.html
为什么我们不将@Injectable()添加到HeroesComponent?如果我们真的想要,我们可以添加它.没有必要,因为HeroesComponent已经用@Component修饰.TypeScript使用装饰器为任何类生成元数据,任何装饰器都可以.
所以基本上你只需要添加,@Injectable()如果没有其他装饰可用,因为如果有任何类型的装饰可用,typescript编译器将根据你在构造函数中传递的变量自动生成依赖信息,例如:constructor(private logger: Logger)
这是正确的吗?谢谢
我想知道Angular 2提供了一种确定客户端设备(大屏幕,中等或小屏幕)的方法,或者可能是屏幕宽度,基本上可以显示或隐藏某些内容(从dom中删除).
如何从角度2配置和发出https请求?找不到任何资源.可以请有人在这里指导我吗?谢谢.
我想在Angular2服务中编写一个简单的切换.
因此,我需要Subject观察的当前值(见下文).
import {Injectable} from 'angular2/core';
import {Subject} from 'rxjs/Subject';
@Injectable()
export class SettingsService {
private _panelOpened = new Subject<boolean>();
panelOpened$ = this._panelOpened.asObservable();
togglePanel() {
this._panelOpened.next(!this.panelOpened$);
}
}
Run Code Online (Sandbox Code Playgroud)
如何从_panelOpened/panelOpened $中获取当前值?
谢谢.
正如人们总是说没有一个被称为愚蠢问题的问题.
我现在正在学习Angular 2.0官方教程.正如我从packageconfig文件中看到的那样,它正在使用rc2.0.我试图压制框架工作抱怨iFrame标签中的"不安全"网址.
我已经检查了此Stack Overflow Question中的指令, 并按照LIVE Plunker中显示的所有内容进行操作.
我的VS代码在编译时没有抱怨任何内容,但是从Chrome检查器我可以看到错误.
以下是我项目的TS文件.
import { Component, OnInit, OnDestroy } from '@angular/core';
import { Router, ActivatedRoute } from '@angular/router';
import { ParcelsService } from './parcels.service';
import { SafeResourceUrl, DomSanitizationService } from '@angular/platform-browser';
import { Parcel } from './mock-parcels';
@Component({
template: `
<h2>Parcels</h2>
<div *ngIf="parcel">
<h3>"{{parcel.checkUrl}}"</h3>
<iframe width=800 height=500 src="{{safeUrl}}}"></iframe>
<p>
<button (click)="gotoHeroes()">Back</button>
</p>
</div>
`,
providers:[ParcelsService, DomSanitizationService]
})
export class HeroDetailComponent implements OnInit, OnDestroy {
parcel: Parcel;
safeUrl : SafeResourceUrl;
private sub: …Run Code Online (Sandbox Code Playgroud)我试过像英雄之旅这样的示例应用程序.
我试图将服务cal转换为http get(InMemoryDbService),如下所示
hero.service.ts
import {Injectable} from '@angular/core';
import {HttpModule, Headers, Http} from '@angular/http';
import 'rxjs/add/operator/toPromise';
import {Hero} from './hero';
@Injectable()
export class HeroService {
private heroesUrl = 'app/heroes';
constructor(private http : Http) { }
// working code
//getHeroes(): Promise<Hero[]> {
// return Promise.resolve(HEROS);
//}
getHeroes(): Promise<Hero[]> {
debugger;
return this.http.get(this.heroesUrl).toPromise().then(responce => responce.json().data as Hero[]).catch(this.handleError);
}
private handleError(error: any): Promise<any> {
console.error('An error occurred', error); // for demo purposes only
return Promise.reject(error.message || error);
}
}
Run Code Online (Sandbox Code Playgroud)
内存-data.service.ts
import {InMemoryDbService} from …Run Code Online (Sandbox Code Playgroud) 我试图在我的Angular 2应用程序中使用AWS SDK,但是我很困难.以下是我采取的步骤:
npm install aws-sdk npm install --save-dev @types/nodedeclare var AWS: any;,import AWS = require('aws-sdk');最后import * as AWS from 'aws-sdk';.当我尝试使用第一种和第三种类型的导入时,在尝试访问AWS对象中的库之前,我没有得到转换器错误,即AWS.config.region = 'us-west-2给我错误';' expected..当我尝试使用第二种方法时,我收到错误:
定位ECMAScript 2015模块时,无法使用导入分配.考虑使用'import*as ns from"mod"','import {a} from"mod"','import d from"mod"'或其他模块格式.)
我错过了一步吗?我看过github项目https://github.com/awslabs/aws-cognito-angular2-quickstart/blob/master/src/app/service/aws.service.ts但是他们的项目没有解释他们是怎么回事导入了SDK.
我的代码中有一个ngFor循环.在这个ngFor循环里面我有一个div,点击这个div我想把索引值传递给类型脚本文件.
我是Anglular 2的新手,我们将不胜感激.
例如:
`<div *ngFor="let y of characters;let i = index">
<div (click)="passIndexValue()">
</div>
<div>`
Run Code Online (Sandbox Code Playgroud) 如何在Angular 2中的服务中将变量作为全局变量,以便两个不同的组件可以访问和修改它?
public myMap : Map<string, string> = new Map<string, string>();
Run Code Online (Sandbox Code Playgroud)
这是服务中的地图,我最初使用组件填充它.现在,在应用程序中一段时间后,我需要使用不同的组件访问相同的填充映射.我怎样才能做到这一点?
当我使用其他组件访问地图时,它显示为未定义.