小编And*_*ard的帖子

Angular 2标头和数据

在Angular 2中,任何人都可以向我展示一个从JSON api feed获取标题和数据的基本示例吗?我可以看到很多关于如何获取数据但没有示例来获取标题的示例.请问您能告诉我组件中的代码,然后是服务中的代码吗?

javascript json angular

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

Angular 2 - 将参数传递给服务

如何将字符串(将是一个URL)传递给服务?由于我的"服务"始终是一个http get请求,因此尽可能保持通用是有意义的,并让控制器将url传递给它,而不是使用不同的url制作数十个单独的控制器.

到目前为止,我的控制器如下所示:

this._httpService.getOffers()
            .subscribe(
            data => { this.offers = <Offer[]>data.offers; },
        error => alert(error),
        () => console.log("Finished")
        );
Run Code Online (Sandbox Code Playgroud)

在我的"服务"中它看起来像这样:

getOffers() {
            return this._http.get('json/test.json')
                .map(res => res.json())
        }
Run Code Online (Sandbox Code Playgroud)

但我想将"json/test.json"移动到控制器.

javascript angular

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

在从服务器请求对象后更改对象中的值

我对从服务器调用对象后如何修改对象中的值的最佳实践感到困惑.

我的TS脚本:

import { Component, OnInit } from '@angular/core';
import { Response } from '@angular/http';
import { HttpService } from "../http.service";


@Component({
  selector: 'app-list-animals',
  templateUrl: './list-animals.component.html',
  styleUrls: ['./list-animals.component.css'],
  providers: [HttpService]
})
export class ListAgentsComponent implements OnInit {

    constructor(private httpService: HttpService) { }

    items: any[];

  ngOnInit() {
      this.httpService.getData()
          .subscribe(
          data => { this.items = data.resource; },
          error => alert(error),
          () => console.log("Finished")
          );
  }

}
Run Code Online (Sandbox Code Playgroud)

我的模板:

<table class="standardTable">
    <tr *ngFor="let item of items"><td>{{item.type}}</td><td>{{item.summary}}</td><td>{{item.cost}}</td><td>{{item.available}}</td><td><a [routerLink]="['/animals/edit', item.id]">Now edit an animal</a></td></tr>
</table>
Run Code Online (Sandbox Code Playgroud)

如果item.type等于"cat",我怎么能在哪里修改它来说"猫"?我在服务中更改它吗?实际的TS脚本?还是用管子?

typescript angular

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

Angular 2 - 表单构建器循环遍历数组,然后循环内部数组

我有以下JSON,我希望将其映射到一个表单:

{
  "lineItemId": 0,
  "count": 0,
  "fixtures": [
    {
      "fixtureId": 0,
      "fixtureName": "string",
      "total": 0,
      "completed": 0,
      "guestDetails": [
        {
          "id": 0,
          "forename": "string",
          "surname": "string",
          "email": "string",
          "telephone": "string",
          "specialInstructions": "string",
          "completed": true,
          "dietaryRequirements": [
            {
              "id": 0,
              "name": "string",
              "isRequired": true
            }
          ]
        }
      ]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

然后我有以下工作打字稿,将其映射到formbuilder:

this.myForm = this.fBuilder.group({
   guestDetailsForm: this.fBuilder.array([])
});

this.httpService.getGuestDetails(this.eventId, this.passedIdValue)
   .subscribe(data => {
      this.fixturesArray = data.fixtures;
      console.log(this.fixturesArray);
      this.fixturesArray.forEach(fixturesArrayElement => {
          this.guestDetailsArray = fixturesArrayElement.guestDetails;
          this.guestDetailsArray.forEach(element => {
            (<FormArray>this.myForm.get('guestDetailsForm')).push(this.fBuilder.group({
            id: [element.id],
            forename: [element.forename], …
Run Code Online (Sandbox Code Playgroud)

typescript angular

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

Angular 2 - 使用[innerHTML]时删除点击功能

我必须使用模板上的[innerHTML]标签通过typescript输入一些html.

我想在html上放一个click函数:

status = "<img src='assets/hello.png' (click)='hello()' />";
Run Code Online (Sandbox Code Playgroud)

但点击功能被控制台剥离了:

WARNING: sanitizing HTML stripped some content (see http://g.co/ng/security#xss).
Run Code Online (Sandbox Code Playgroud)

我看到有些人提到使用"DomSanitizer",但找不到修复我确切问题的例子.

typescript angular

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

审查如何有条件地禁用“提交”按钮

如果所有字段都不符合要求的条件,如何有条件地禁用我的Vuelidate表单的“提交”按钮?

我尝试了以下内容,但:disabled只接受其中的“禁用”一词。

<form>
  <ol>
    <li class="inputQuestion" v-bind:class="{ 'error': $v.user.username.$error }">
      <label>Username:</label>
      <input v-model.trim="user.username" @input="$v.user.username.$touch()" />
    </li>
    <li class="inputQuestion" v-bind:class="{ 'error': $v.user.password.$error }">
      <label>Password:</label>
      <input v-model.trim="user.password" @input="$v.user.password.$touch()" />
    </li>

    <li class="submission">
      <button @click.prevent="submitForm" :disabled="$v.form.valid()">Sign In</button>
    </li>
  </ol>
</form>
Run Code Online (Sandbox Code Playgroud)

vuejs2 vuelidate

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

在 ajax 请求期间禁用按钮

我已经在 jquery 和 Angular 1 中看到了很多关于如何在处理 ajax 请求时禁用提交按钮的方法,但不是 Angular 2。

到目前为止,我在模板上有:

<button type="submit" [disabled]="requestSent">Submit</button>
Run Code Online (Sandbox Code Playgroud)

和以下在打字稿中切换它的禁用状态:

requestSent: boolean = false;

this.httpService.addNewAgent(object)
            .subscribe(
            data => {

                this.requestSent = false;


            },
            error => {

                console.log(error.error);

            }
            );
Run Code Online (Sandbox Code Playgroud)

但这对每个组件来说都是相当冗长的。有没有更通用的方法来处理这个问题?也许与拦截器?

angular

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

表单数组推送为数组中倒数第二个项目

我有以下代码将新项目推送到表单数组的最末尾:

(<FormArray>this.invoicesForm.get('invoices')).push(this.fBuilder.group({
            id: null,
            issueDate: [null, Validators.required], // Only fill in and set the required validator for issue date if a custom date has already been chosen
            invoiceIssuedStateCode: [0],
            canEditIssueDate: [true],
            chooseDate: [false],
            issued: [false],
            paidStatus: [0],
            reference: [null],
            creditNotes: this.buildCreditNotes([]),
            lineItems: this.buildNewLineItems(this.lineItemsRecord.lineItems)
        }));
Run Code Online (Sandbox Code Playgroud)

但是,我需要将此项目作为数组中的倒数第二个项目推送。我该怎么办呢?

angular

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

标签 统计

angular ×7

typescript ×3

javascript ×2

json ×1

vuejs2 ×1

vuelidate ×1