标签: angular2-template

Angular2 - 删除行或列单击删除按钮的位置

我们可以使用jquery轻松删除类似的东西,但我们可以使用angular来做这样的事情吗?

<tr>
<td *ngFor="#lev of rubric?.criteria[0].levels">
                    <button class="close removeLevel" (click)="onClickRemove($event)">&times;</button>
                    <input type="text" class="form-control" placeholder="Performance Level"
                           #level="ngForm"
                           [(ngModel)]="lev.level"
                           ngControl="level"
                    />
</td>
</tr>
Run Code Online (Sandbox Code Playgroud)

在Component.ts中:

onClickRemove($event) {
}
Run Code Online (Sandbox Code Playgroud)

如何在此处访问行或单元元素,从哪里引发事件?

jquery angular2-template angular

4
推荐指数
2
解决办法
3760
查看次数

使用FormBuilder Angular 2绑定选择列表

在Angular 2中,创建一个简单的应用程序但是当在选择列表的情况下使用DOM控件附加formBuilder时,第一个选项变为空白 - 即使我在formBuilder中提供了一些初始值,该值不是来自DOM元素

在FomBuilder之前

选择列表
Genral
LDAP

在FomBuilder之后

选择List
No选项最初出现
Genral
LDAP


File 1 - form.component.ts

import { Component } from '@angular/core';
import { FormBuilder, Validators, REACTIVE_FORM_DIRECTIVES, FormGroup, FormControl } from '@angular/forms';

@Component({

        moduleId : module.id,
        selector : 'login',
        templateUrl : 'login.component.html',
        directives : [ REACTIVE_FORM_DIRECTIVES ],
})

export class LoginComponent{

        loginForm : FormGroup;

        constructor(private _router:Router,private _fb:FormBuilder){

                this.loginForm = _fb.group({
                    'username' : ['aa',[Validators.required]],
                    'password'  : ['',[Validators.required]],
                    'type'  : ['']
                })            
        }
      }

     loginUser(){
        console.log("Form is  = ",this.loginForm.controls);
     }
Run Code Online (Sandbox Code Playgroud)

文件2 …

typescript angular2-forms angular2-template angular

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

Angular2根据字符串数组过滤对象数组

我有一个用户数组,每个用户都有一个名字(user.name):

let users = Array<User>();

想象一下,我有这个字符串数组我希望users根据下一个字符串数组过滤数组:

let filterargs = ['Lau', 'Za'];
Run Code Online (Sandbox Code Playgroud)

这是我的标记:

<li *ngFor="let user of usersList | filter: filterargs; let i = index;">
Run Code Online (Sandbox Code Playgroud)

这是我的管道过滤器,但它无法正常工作:

import {Pipe, Injectable, PipeTransform} from "@angular/core";

@Pipe({name: 'filter', pure: false})
@Injectable()
export class FilterPipe implements PipeTransform {

    transform(items: any[], args: any[]): any {
        // filter items array, items which match and return true will be kept, false will be filtered out
        return items.filter(item => item.name.toLowerCase().indexOf(args[0].name.toLowerCase()) !== -1);
    }
}
Run Code Online (Sandbox Code Playgroud)

angular2-directives angular2-template angular

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

Angular2 TemplateRef选择器

在我的数据表项目中,开发人员能够在表声明中声明模板,以用于标题单元格和正文单元格.

<datatable>
    <datatable-column name="Name">
        <template let-column="column">
            Header: {{column.name}}
        </template>
        <template let-value="value">
            Hi: <strong>{{value}}</strong>
        </template>
    </datatable-column>
    <datatable-column name="Age">
        <datatable-body-template let-value="value">
            I'm: <strong>{{value}}</strong> old
        </datatable-body-template>
    </datatable-column>
</datatable>
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,第一个模板是标题单元格模板,第二个模板是主体单元格模板,顺序很重要.如果您只声明一个模板,它将只执行体细胞模板.你可以看到这是如何正在做目前这里.

我目前允许你TemplateRef通过a 传递Input给column指令但是这种方法没问题,但作为API使用者,组件定义中的声明性模板是一种更清洁的方法.

值得注意的是,它不可能通过类似的方式进行命名#body,#header因为您可以使用多个列使名称不唯一.

这个DSL不是非常直观,因为它不是非常明确的,哪个取决于订单.ng-content允许你输入一个选择器属性,我想知道用模板完成类似事情的最佳方法是什么?所以类似于:

<datatable>
    <datatable-column name="Name">
        <datatable-header-template let-column="column">
            Header: {{column.name}}
        </datatable-header-template>
        <datatable-body-template let-value="value">
            Hi: <strong>{{value}}</strong>
        </datatable-body-template>
    </datatable-column>
</datatable>
Run Code Online (Sandbox Code Playgroud)

我正在四处寻找是否有可能超越它,TemplateRef但我不确定那是不是一个好主意.

所以说...我的问题,我怎样才能完成命名的选择器模板引用?

angularjs angular2-template angular

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

如何在angular2中更改按钮文本并禁用单击事件上的按钮

在angular2中单击该按钮时,如何更改<button>的文本?

例如,将按钮文本从"保存"更改为"正在保存...",然后将其设置为禁用.

我知道如何在AngularJS,jQuery和普通JS中做到这一点,我对如何在Angular2中做到这一点有一些想法,但我想确保我不是以一些过时或复杂的方式做到这一点,当涉及到Angular2.

javascript angular2-template angular

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

是否有条件模板插值的语法?

我有一个带有以下元素的角度(2.4.9)模板:

<div *ngIf="a || b || c || d || e">Remaining</div>
Run Code Online (Sandbox Code Playgroud)

我现在面临着根据另一个条件改变迄今为止静态的"剩余"文本的需要:

<div *ngIf="a || b || c || d || e || Z != 'draft'">Initial</div>
<div *ngIf="a || b || c || d || e || Z == 'draft'">Remaining</div>
Run Code Online (Sandbox Code Playgroud)

*ngIf已经加载了,我想阻止不必重复它,因为我在上面的例子一样,只是为了添加一个额外的条件.

我也想避免这样做:

<div *ngIf="a || b || c || d || e">
    <div *ngIf="Z != 'draft'">Initial</div>
    <div *ngIf="Z == 'draft'">Remaining</div>
</div>
Run Code Online (Sandbox Code Playgroud)

...因为这会改变页面的结构,从而改变样式规则.

所以,不是在div中引入一个具有自己的新元素*ngIf,这会导致我们添加样式规则,我正在寻找类似于条件插值语法的东西,这样我就可以写了

<div *ngIf="many || conditions">{{ status === "DRAFT" ? 'Initial' : 'Remaining' }}</div>
Run Code Online (Sandbox Code Playgroud)

以类似的方式,你也可以做 …

angular2-template angular

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

子路径上路由器出口内的角组件将不会填充可用空间

<router-outlet></router-outlet>导航到“ / child”路由时,我的应用程序的根目录将在子模块中显示以下组件:

child.component.ts

import {Component} from "@angular/core";

@Component({
  template: `
    <div style="display:flex; width: 100%; height: 100%;">
      <custom-sidebar-component></custom-sidebar-component>
      <router-outlet></router-outlet>
    </div>`
})
export class ChildComponent {
}
Run Code Online (Sandbox Code Playgroud)

现在,此组件可以正常显示,并可以按预期填充整个屏幕。但是,当我尝试导航到该模块的子路径时,例如说“ / child / home”,我希望以下HTML显示在<router-outlet></router-outlet>上面的组件模板中看到的子路径中。

child-home.component.html

<style>
  .parent-style {
    display: flex;
    flex-flow: row wrap;
    width: 100%;
    height: 100%;
  }

  .box-style {
    display: flex;
    justify-content: center;
    align-items: center;
    flex-grow: 1;
    background: red;
    color: white;
    border: 1px solid black;
  }
</style>
<div class="parent-style">
  <div class="box-style">Box 1</div>
  <div class="box-style">Box 2</div>
</div>
Run Code Online (Sandbox Code Playgroud)

但是这次,路由器出口的内容没有按我希望的那样填充可用空间。我能够看到我想要的结果的唯一方法是打开开发工具并编辑包装组件的Angular生成的_nghost属性。如何获得我的组件以填充可用空间?

这是我的期望

预期

这就是我真正得到的

在此处输入图片说明

angular-routing angular2-template angular2-routing angular2-components angular

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

将事件和变量添加到动态创建的组件角度4

我在Angular应用程序中有一个动态创建的组件,如下所示:

const factory = this.resolver.resolveComponentFactory<IMessage>(MessageComponent);
this.component = this.container.createComponent(factory);
this.component.instance.body = message;
Run Code Online (Sandbox Code Playgroud)

它相当于添加<message [body]="message"></message>组件的HTML.

让我们假设,我想在我的动态组件代码中实现类似的东西:

<message [body]="message" #form="my-form" (change)="myFunction()"></message>

如何绑定这些附加变量并通过组件的ts文件更改内部事件?

angular2-template angular

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

&lt;ng-template&gt; &lt;/ ng-template&gt;正在加载多次

我正在使用ngTemplateOutlet加载。但是它会多次加载模板。正在加载正确的模板,但会多次执行loadTemplate()方法。

HTML中

<table>
    <thead>
    </thead>
    <tbody>
        <ng-template [ngTemplateOutlet]="loadTemplate()"></ng-template>
    </tbody>
</table>

<ng-template #template1>
    <tr *ngFor="iteration">
        <p>Hiii</p>
    </tr>
</ng-template>

<ng-template #template2>
    <tr *ngFor="iteration">
        <p>Byee</p>
    </tr>
</ng-template>
Run Code Online (Sandbox Code Playgroud)

在我的component.ts中

@ViewChild('template1') template1: TemplateRef<any>;
@ViewChild('template1') template1: TemplateRef<any>;
loadTemplate(){
    if (condition)
        return this.template1;

    return this.template2;
}
Run Code Online (Sandbox Code Playgroud)

templates angular2-template ng-template angular angular5

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

属性绑定连接字符串角度

如何连接以下两个语句。两者都自己工作。

<app-output [warnMessage]="myvalue | number:'1.0-1'"></app-output>

<app-output [warnMessage]="'TEXT01' | translate"></app-output>
Run Code Online (Sandbox Code Playgroud)

现在,我想将两者结合起来。我该如何实现?例如:

<app-output [warnMessage]="myvalue | number:'1.0-1' + 'TEXT01' | translate"></app-output>
Run Code Online (Sandbox Code Playgroud)

angular2-template angular

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