Tag: 打字稿

用angular2 http服务caching结果

我通过服务公开HTTP GET请求,并且有几个组件正在使用这些数据(用户的个人资料详细信息)。 我希望第一个组件请求实际执行HTTP GET请求到服务器并caching结果,以便随后的请求将使用caching的数据,而不是再次调用服务器。 下面是这个服务的一个例子,你会如何推荐用Angular2和typescript来实现这个caching层。 import {Inject, Injectable} from 'angular2/core'; import {Http, Headers} from "angular2/http"; import {JsonHeaders} from "./BaseHeaders"; import {ProfileDetails} from "../models/profileDetails"; @Injectable() export class ProfileService{ myProfileDetails: ProfileDetails = null; constructor(private http:Http) { } getUserProfile(userId:number) { return this.http.get('/users/' + userId + '/profile/', { headers: headers }) .map(response => { if(response.status==400) { return "FAILURE"; } […]

angular2兄弟组件通信

我有一个ListComponent。 在ListComponent中单击某个项目时,该项目的详细信息应显示在DetailComponent中。 两者同时在屏幕上,所以不涉及路由。 如何告诉DetailComponent ListComponent中的哪个项目被点击? 我已经考虑发布一个事件,直到父(AppComponent),并让父母用@Input在DetailComponent上设置selectedItem.id。 或者我可以使用可观察订阅的共享服务。 编辑:通过事件+ @Input设置选定的项目不会触发DetailComponent,但是,以防我需要执行额外的代码。 所以我不确定这是一个可接受的解决scheme。 但是这两种方法看起来都比Angular 1的做法要复杂得多,这个方法是通过$ rootScope。$ broadcast或$ scope。$ parent。$ broadcast来完成的。 Angular 2中的所有东西都是一个组件,我很惊讶没有关于组件通信的更多信息。 有没有另外一种更直接的方法来完成这个任务?

获取并设置在TypeScript中

我正在尝试创build一个属性get和set方法: private _name: string; Name() { get: { return this._name; } set: { this._name = ???; } } 什么是关键字来设置一个值?

如何使用SystemJS和Gulp来准备发布版本?

我在我的Angular2项目中使用SystemJS。 我使用TypeScript的tsconfig文件。 我想用gulp连接并缩小我的代码的生产版本。 我有一个问题,在代码拼接:每次我试图连接文件时,我得到“angular”未定义或“系统”未定义。 我试图修改我尝试从节点模块加载我的文件的顺序,但是我没有成功。 我想知道你们有没有这个问题,并find答案? 这是我的大嘴文件: var gulp = require('gulp'), ….. var paths = { dist: 'dist', vendor: { js: [ 'node_modules/systemjs/dist/system.src.js', 'node_modules/angular2/bundles/angular2.dev.js', 'node_modules/angular2/bundles/angular2-polyfills.js', 'node_modules/angular2/bundles/router.dev.js' … ], css: [] }, app: { templates: [ 'app/**/*.html', '!node_modules/*.html' ], scripts: [ 'app/**/*.ts', 'app/config.ts', 'app/app.ts' ] } }; var tsProject = ts.createProject('tsconfig.json', { out: 'Whatever.js' }); gulp.task('dev:build:templates', […]

TypeScript任何与对象

我正在看TypeScript代码,并注意到他们使用 interface Blablabla { field: Object; } 如何使用Object vs any有什么好处? interface Blablabla { field: any; }

Angular 2 DI错误 – EXCEPTION:无法parsing所有参数

我已经在Angular 2中构build了一个基本的应用程序,并遇到了一个奇怪的问题,我无法将服务注入到其中一个组件中。 它会把它们注入到我创build的其他三个组件中。 对于初学者来说,这是服务(这是非常基本的,因为我只是现在正在testing的东西): import { Injectable } from '@angular/core'; @Injectable() export class MobileService { screenWidth: number; screenHeight: number; constructor() { this.screenWidth = window.outerWidth; this.screenHeight = window.outerHeight; window.addEventListener("resize", this.onWindowResize.bind(this) ) } onWindowResize(ev: Event) { var win = (ev.currentTarget as Window); this.screenWidth = win.outerWidth; this.screenHeight = win.outerHeight; } } 而它拒绝使用的组件: import { Component, } from '@angular/core'; […]

如何在Angular 2的“select”中获得新的select?

我正在使用Angular 2(TypeScript)。 我想为新的select做些什么,但是我得到的onChange()总是最后的select。 我怎样才能获得新的select? <select [(ngModel)]="selectedDevice" (change)="onChange($event)"> <option *ngFor="#i of devices">{{i}}</option> </select> onChange($event) { console.log(this.selectedDevice); // I want to do something here for new selectedDevice, but what I // got here is always last selection, not the one I just select. }

打字签名与结构签名是如何工作的?

我遇到了一些麻烦,如何在接口中定义构造函数。 我可能完全误解了一些东西。 但是我已经search了很长一段时间的答案,我找不到与此相关的任何内容。 如何在TypeScript类中实现以下接口: interface MyInterface { new ( … ) : MyInterface; } Anders Hejlsberg在本video中创build了一个包含类似内容的界面(大约14分钟)。 但是对于我来说,我不能在课堂上实现这一点。 我可能误解了一些东西,我没有得到什么? 编辑: 澄清。 与“新(…)”我的意思是“任何事情”。 我的问题是,我无法得到这个工作的最基本的版本: interface MyInterface { new () : MyInterface; } class test implements MyInterface { constructor () { } } 这不是我编译我得到“类'testing'声明接口'MyInterface',但没有实现它:types'MyInterface'需要一个构造签名,但types'testing'缺乏一个”试图编译它。 编辑: 所以在研究了这一点之后再给予反馈。 interface MyInterface { new () : MyInterface; } class test implements MyInterface […]

如何在Angular 2中创build一个单例服务?

我已经读过注入引导应该有所有的孩子共享相同的实例,但我的主要和头组件(主要应用程序包括头部组件和路由器出口)每个获得我的服务单独的实例。 我有一个FacebookService,我用来调用Facebook的JavaScript API和使用FacebookService的UserService。 这是我的引导: bootstrap(MainAppComponent, [ROUTER_PROVIDERS, UserService, FacebookService]); 从我的日志logging看起来像bootstrap调用完成,然后我看到FacebookService,然后在每个构造函数代码运行,MainAppComponent,HeaderComponent和DefaultComponent之前创buildUserService:

Angular 2 – 直接从Observable返回数据

我一直在试图弄明白这个问题,而我一直在嘲弄我的头脑,没有任何我能读的文件给了我一个答案。 我有一个直接和API通话的服务,并返回一个可观察的事件,在正常情况下,我会订阅并按照我所希望的方式来处理这些数据,但是在一个利用来自平静服务请求的辅助服务中,我需要能够从请求中返回值。 getSomething() { return this._restService.addRequest('object', 'method').run() .subscribe( res => { res; }, err => { console.error(err); } ); } returnSomething() { return this.getSomething(); } 在上面的快速示例中,我想知道是否有任何方法可以从getSomething()中的getSomething()返回res 。 如果这样做是不可行的,还有什么办法呢? 我会补充说,_restService是非常依赖,我真的不想开始搞乱。