小编Gal*_*dor的帖子

如何模拟angular2测试的http错误

我正在为angular2服务编写单元测试.代码片段:

// jasmine specfile

// already injected MockConnection into Http

backend.connections.subscribe ((c: MockConnection) => {
    connection = c;
});

// doing get-request
myServiceCallwithHttpRequest ().subscribe (result => {
    // this test passes!
    expect (result).toEqual ({
        "message": "No Such Object"
    });
    // this test fails, don't know how to get the response code
    expect (whereIsResponseStatus).toBe (404);
});

connection.mockRespond (new Response (new ResponseOptions ({
    body: {
        "message": "No Such Object"
    },
    status: 404
})));
Run Code Online (Sandbox Code Playgroud)

我的服务:

// service

myServiceCallwithHttpRequest (): Observable<Response> {
    return this.http.get …
Run Code Online (Sandbox Code Playgroud)

unit-testing typescript angular2-http angular

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

如何倾听角度模板驱动形式的变化

在我的形式:

<form>
   <label class="form-check-label">
     <input [(ngModel)]="options.o1" name="o1"
            type="checkbox" class="form-check-input" >
     Option 1
   </label>
   <label class="form-check-label">
     <input [(ngModel)]="options.o2" name="o2"
            type="checkbox" class="form-check-input" >
     Option 2
   </label>
</form>
Run Code Online (Sandbox Code Playgroud)

我想在两个复选框中的一个被更改时被通知,而不是通过向每个复选框添加事件处理程序,而是通过向表单添加事件处理程序,实际上表单中还有更多字段.

angular

16
推荐指数
2
解决办法
8704
查看次数

如何在angularjs中链接promise promise函数

我知道如何链接promises以便执行多个成功函数.在许多例子中都提到了这一点.如何链接promises以便执行多个错误函数?

promise deferred angularjs

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

无限深度数组的 Typescript 类型

如何定义类型

string|string[]|string[][]|string[][][] // ad infinitum
Run Code Online (Sandbox Code Playgroud)

在打字稿中?

编辑:解决方案是:

type Rec = string | string[] | Rec[]
Run Code Online (Sandbox Code Playgroud)

但这是不允许的。

这是我的用例:

interface RecursiveArray<T> {
    [index: number]: (RecursiveArray<T> | T);
}

type Recursive<T> = T|RecursiveArray<T>

function stringValue (value: Recursive<string|boolean>): Recursive<string> {
  if (typeof value === 'boolean') {
    return value ? 'true' : 'false';
  }
  if (Array.isArray (value)) {
    return (value).map (stringValue);
  }
  return stringValue(value);
}
Run Code Online (Sandbox Code Playgroud)

typescript

9
推荐指数
2
解决办法
2273
查看次数

在/node_modules/angular2/src/testing/matchers.d.ts中找不到命名空间jasmine

我想用业力来测试我的angular2应用程序,但是我得到了一个打字稿错误:

/my/path/node_modules/angular2/src/testing/matchers.d.ts

错误:(4,37)TS2503:找不到命名空间'jasmine'.

安装了NPM模块,typescript编译器运行良好.怎么了?

myservice.serviceSpec.ts:

import {it, describe, expect, beforeEach, inject} from 
'angular2/testing';
import {myService} from "../app/myservice.service";

describe('Tests', () => {
    it('should be true', () => {
        expect(true).toBe(true);
    });
});
Run Code Online (Sandbox Code Playgroud)

的package.json:

{
  "name": "myapp",
  "version": "0.1.0",
  "dependencies": {
    "angular2": "^2.0.0-beta.2",
    "es6-promise": "^3.0.2",
    "es6-shim": "^0.33.13",
    "reflect-metadata": "^0.1.2",
    "rxjs": "^5.0.0-beta.0",
    "systemjs": "^0.19.17",
    "zone.js": "^0.5.10"
  },
  "devDependencies": {
    "jasmine-core": "^2.4.1",
    "karma": "^0.13.19",
    "karma-chrome-launcher": "^0.2.2",
    "karma-coverage": "^0.5.3",
    "karma-jasmine": "^0.3.7",
    "remap-istanbul": "^0.5.1"
  }
}
Run Code Online (Sandbox Code Playgroud)

tsconfig.json:

{
  "compilerOptions": {
    "target": "ES5",
    "module": "system",
    "moduleResolution": "node",
    "sourceMap": …
Run Code Online (Sandbox Code Playgroud)

jasmine typescript karma-jasmine angular

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

即使设置为原始值,angular2 formcontrol仍保持脏状态

当我在输入字段中更改值时,相应的表单控件将被设置为脏。当我还原更改(通过在输入字段中键入)时,表单控件保持脏状态。这是故意的,这是错误还是我做错了?

forms angular

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

Angular2反应式表单,如何将FormGroup和FormArray传递给子组件

我想从问题库构建一个动态表单,就像 angular2 中的动态表单食谱一样。所以我有一个 QuestionComponent:

<div [formGroup]="form">

  <ul *ngIf="question.multi" [formArrayName]="question.key">
    <li *ngFor="let control of form.get(question.key).controls; let lix=index">

      <div>

        <app-text-box [controlName]="lix"></app-text-box>

      </div>
    </li>
  </ul>

  <div *ngIf="!question.multi">
    <app-text-box [controlName]="question.key"></app-text-box>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

基于question.multi有一个单一的FormControl或一个FormArray。表单输入位于 TextBoxComponent 中:

<input class="form-control"
 [formControlName]="controlName"
 [id]="controlName" type="text">
Run Code Online (Sandbox Code Playgroud)

但这不起作用:

./TextBoxComponent 类 TextBoxComponent 中出现错误 - 内联模板:0:28 原因如下: formControlName 必须与父 formGroup 一起使用

如何将 FormGroup 的信息获取到组件中?

我尝试了这种方式:QuestionComponent:

<div [formGroup]="form" class="col-md-10" >

  <ul *ngIf="question.multi" [formArrayName]="question.key" class="list-group">
    <li *ngFor="let control of form.get(question.key).controls; let lix=index">

      <div>

        <app-text-box [form]="form" [arrayName]="question.key" [controlName]="lix"></app-text-box>

      </div>
    </li>
  </ul>

  <div *ngIf="!question.multi">
    <app-text-box …
Run Code Online (Sandbox Code Playgroud)

forms angular

5
推荐指数
0
解决办法
1476
查看次数

如何在curl配置文件中设置自定义标头

如何在curl配置文件中添加用于设置自定义标头的选项?以下两行均无效:

Header = 'x-abc: xyz'
header = 'x-abc: xyz'
Run Code Online (Sandbox Code Playgroud)

curl http http-headers

4
推荐指数
1
解决办法
3234
查看次数

如何将 minikube 上的入口暴露给外部主机

我可以在 minikube 集群上设置 Ingress,如本教程所示: https ://kubernetes.io/docs/tasks/access-application-cluster/ingress-minikube/

但是,只能从运行 minikube 的主机在 minikube IP 上访问该服务。

如何启用来自其他主机的连接?

minikube kubernetes-ingress

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