标签: angular2-template

用于自定义可重用组件的Angular2数据绑定

我想要一个由标签和文本框组成的模板.此模板可以在我的页面中的不同位置重复使用.要做到这一点,我已经创建了一个MyTextComponent.我想知道如何将不同的值绑定到组件输入.

例如:

MyTextComponent

import {Component, Input} from 'angular2/core';
@Component({
    selector: 'myText',
    template:`<label>{{someLabel}}</label>
                 <input id=myId type="text" [(ngModel)]=bindModelData>
                 `
})
export class MyTextComponent {
    @Input() myId : string;
    @Input() bindModelData: any;
}
Run Code Online (Sandbox Code Playgroud)

MyPageComponent

import {Component} from 'angular2/core';
import {MyTextComponent} from './MyTextComponent.component'

@Component({
    template:`<myText myId="id1" bindModelData="myString1"></myText>
              <myText myId="id2" bindModelData="myString2"></myText>
              `,
    directives:[MyTextComponent]
})
export class MyPageComponent{
    myString1: string;
    myString2: string;
}
Run Code Online (Sandbox Code Playgroud)

如何将MyTextComponent输入的ngModel绑定到MyPageComponent局部变量?

编辑:添加@Output后尝试,但它没有工作:( MyPageComponent中的插值是空白的,以及日志打印未定义.但插值适用于mytextComponent.任何想法

import {Component} from 'angular2/core';
import {MyTextComponent} from './myText.component'

@Component({
    template:`<myText myId="id1" [(bindModelData)]="myString1"></myText>
              <myText myId="id2" [(bindModelData)]="myString2"></myText>
              {{myString1}}
              {{myString2}}

              <button (click)="clicked()">Click …
Run Code Online (Sandbox Code Playgroud)

angular-ngmodel angular2-forms angular2-template angular

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

掉落事件不工作角2

我正在以角度2构建上传组件,我偶然发现问题.(drop)事件不起作用.这是我的实施

<div
class="input-upload"
*ngIf="status != 'finished'"
(drop)="onDrop($event)"
(dragenter)="dragenter()"
(dragleave)="dragleave()"
(dragover)="dragover()"
[ngClass]="{'drag-over': dragOver | async}"
>

onDrop(event: any) {
event.preventDefault();
event.stopPropagation();
console.log(event)
}
Run Code Online (Sandbox Code Playgroud)

难道我做错了什么?我甚至把不存在的函数放在(drop)事件中,而角度没有给出错误.

angular2-template angular

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

如何在不使用jQuery的情况下在Angular2中获取元素的offSetTop

我正在尝试创建一个指令,当元素可见时,该指令会慢慢淡化照片.为此,我的第一个想法是比较项目的位置与顶部(也检查窗口的高度).但是我可以找到如何用Angular2做到这一点.

到目前为止这是我的代码:

import {Directive, ElementRef, Renderer} from 'angular2/core';

@Directive({
    selector: '[fadeInPhoto]',
    host: {
        '(window:scroll)': 'onScroll()'
    }
})
export class FadeInPhotoDirective{
    private scrollTop: number;
    private initialClass: string;
    constructor(private _el: ElementRef, private _renderer: Renderer){
        this.initialClass = 'thumbnail';
    }

    onScroll(){
        console.log('Photo top:', this._el);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是this._el似乎没有包含该信息的任何方法或属性.

angular2-template angular

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

角度2材质:侧面切换来自组件

我在这个项目中使用Angular 2 Material sidenav:

<md-sidenav-layout>
  <md-sidenav #start mode="side" [opened]="true">
      <md-nav-list>
      </md-nav-list>
  </md-sidenav>

  <button md-button (click)="start.toggle()">Close</button>

  <router-outlet></router-outlet>

</md-sidenav-layout>
Run Code Online (Sandbox Code Playgroud)

如何start.toggle()使用click事件从我的组件调用而不是元素?

谢谢你的阅读

javascript angular2-template angular-material2 angular

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

播放Angular 2 Typescript中的HTML 5视频

当用户点击视频区域本身时,我想以编程方式从TypeScript开始播放HTML视频.

这是我的HTML代码:

<div class="video">
<video controls (click)="toggleVideo()" id="videoPlayer">
    <source src="{{videoSource}}" type="video/mp4" />
    Browser not supported
</video>
</div>
Run Code Online (Sandbox Code Playgroud)

这是我的TypeScript代码:

@ViewChild('videoPlayer') videoplayer: any;

toggleVideo(event: any) {
    this.videoplayer.play();
}
Run Code Online (Sandbox Code Playgroud)

问题是我得到一个错误,表示play()函数未定义/存在.这可能是什么错误?

html5 angular2-template angular

16
推荐指数
4
解决办法
4万
查看次数

在Angular2中从HTML调用组件方法

是否可以从HTML调用组件方法,还是应该创建另一个组件来处理格式?

<div *ngFor="let item of items">
  <div class="title">{{ item.Title }}</div>
  <p>
    callComponentMethodHere({{item}})
  </p>
</div>
Run Code Online (Sandbox Code Playgroud)

typescript angular2-template angular

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

Angular 2 html check variable undefined with ngif,当值为0时排除大小写

我正在使用Angular 2,并希望使用htm ngif coniditon检查变量值是否在角度中未定义

如果我使用<span*ngIf ="!testvar">

它还涵盖了变量testvar = 0时的情况,但我想排除它为0时的情况

以下作品,但这些是2个检查:

<span *ngIf="!testvar && testvarl != 0"></span>
Run Code Online (Sandbox Code Playgroud)

我想检查这个案例,只是为了缩短它并使其更清洁.有一个简单的方法吗?

angular2-directives angular2-template angular

16
推荐指数
1
解决办法
3万
查看次数

Angular:如何使用参数确定活动路径?

我已经阅读了关于如何确定活动路线的这个问题,但是我还不清楚如何确定一个有参数的活动路线?

现在我这样做:

<a [routerLink]="['/Profile/Feed', {username: username}]"
   [ngClass]="{active: getLinkStyle('/profile/john_doe/feed')}">
   Feed for {{username}}
</a>
Run Code Online (Sandbox Code Playgroud)

在我的组件内:

getLinkStyle(path:string):boolean {
  console.log(this._location.path()); // logs: '/profile/john_doe/feed'
  return this._location.path() === path;
}
Run Code Online (Sandbox Code Playgroud)

这将有效,因为我将用户名作为字符串传递.有没有办法通过传递正确的参数?

angular2-template angular2-routing angular

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

是否可以在Angular 2中添加动态类来托管?

我知道在Angular2中我可以通过这样做将一个类'red'添加到组件的selector元素:

@Component({
    selector: 'selector-el',
    host: {
        '[class.red]': 'true'
    },
    ...
})
Run Code Online (Sandbox Code Playgroud)

我想知道是否有办法向主机添加动态类,类似于你对NgClass的处理方式(我知道实际上不支持NgClass,我正在寻找可能的解决方案):

@Component({
    selector: 'selector-el',
    host: {
        '[NgClass]': 'colorClass'
    },
    ...
})
...
constructor(){
    this.colorClass = 'red';
}
Run Code Online (Sandbox Code Playgroud)

angular2-template angular

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

如何检测滚动到html元素的底部

我有这个我通过Id引用的元素:

    let infiniteScrollElement = document.getElementById('th-infinite-scroll-tracker');
Run Code Online (Sandbox Code Playgroud)

当浏览器到达元素的底部时我需要监听.

怎么做到这一点?

angular2-directives angular2-template angular

15
推荐指数
3
解决办法
4万
查看次数