Angular2教程:本节中的ID变量如何自动递增?

时间:2016-09-14 12:50:41

标签: arrays angular typescript

This Section of the Angular2 Tutorial中,有向数组添加新项目的功能。添加后,ID会自动递增,但我无法弄清楚正在执行的操作。

我知道Arrays.push()返回数组的长度,是自动插入到Hero类的id变量中的长度吗?

在hero.services.ts中,有一段代码可以创建一个英雄:

create(name: string): Promise<Hero> {
return this.http
  .post(this.heroesUrl, JSON.stringify({name: name}), {headers: this.headers})
  .toPromise()
  .then(res => res.json().data)
  .catch(this.handleError);
}

在heroes.component.ts中有添加

add(name: string): void {
  name = name.trim();
  if (!name) { return; }
  this.heroService.create(name)
    .then(hero => {
    this.heroes.push(hero);
    this.selectedHero = null;
  });
}

3 个答案:

答案 0 :(得分:7)

本教程使用的是following-sibling axes库。它正在处理正在对英雄网址发布的帖子。可以在第328行的文件中看到处理程序:

angular 2 in-memory-web-api

在该处理程序内部,id通过调用genId函数生成,该函数的实现位于第257行:

WebDriverWait wait = new WebDriverWait(driver,10);

wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.cssSelector("iframe[title = 'Universal Device Template Configuration']")));

//now find the desire element
WebElement textBox = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("(.//td[contains(text(),'Display Name*')]/following-sibling::td)[1]//div[contains(@class, 'dijitInputField')]/input")));

答案 1 :(得分:2)

它使用InMemoryDbService的默认功能。

您可以在app/in-memory-dataservice.ts

中找到模拟/参考

import { InMemoryDbService } from 'angular2-in-memory-web-api

可在此处找到服务的角度来源:in-memory-backend.service.t (line 326)

答案 2 :(得分:0)

在服务的create方法中,调用web api并将英雄的名称发布到其中,返回包含idname字段的完整英雄对象。

所以我想增量和&#34;保存&#34;发生在网络api的窗帘后面。