javascript - Angular 2 beta.8 如何使用@Query?

标签 javascript angular

我正在尝试使用 @Query获取有关我的模板中某个元素的一些信息。但我似乎无法让它发挥作用。

我试过这样做:Documented here我的看起来像这样,

import {Component, Query, QueryList, ElementRef} from 'angular2/core';

@Component({
    selector : 'my-app',
    template : `
        <banner #banner>
            <h4>Some New App</h4>
        </banner>
        <div class="container"></div>
    `
})

export class App
{
    private banner:any;

    constructor(@Query('banner') banner:QueryList<ElementRef>)
    {
        this.banner = banner;
    }

    ngOnInit()
    {
        console.log(this.banner)
    }
}

控制台日志显示:

enter image description here

现在我在这里可能是错的。但我希望 _results: Array[0]有一个结果。我希望它包含一些关于 <h4> 的信息元素。

考虑到这一点。我尝试按照文档以几种不同的方式进行操作。我见过一些人使用烤肉盒,一些人使用 Camel 等。所以我想也许文档还没有更新。

经过更多搜索,我发现了这个 https://github.com/angular/angular/issues/3922

@Query已更改为此语法?

@ContentChild()@ViewChildren()

无论哪种方式,我的问题是从今天开始执行此操作的正确方法是什么?或者我只是在这里完全遗漏了什么?

最佳答案

@Query 等同于 @ContentChild/@ContentChildren(通过 ng-content 投影的元素)因此它不会工作查询 View 中的元素。你想要的是 @ViewQuery()。也就是说,您最好不要使用 @Query@ViewQuery,因为 API will be removed .

这是您更正的代码

import {Component, ViewChildren, QueryList, ElementRef} from 'angular2/core';

@Component({
    selector : 'my-app',
    template : `
        <banner #banner>
            <h4>Some New App</h4>
        </banner>
        <div class="container"></div>
    `
})
export class App {

    @ViewChildren('banner') banner: QueryList<ElementRef>;

    ngAfterViewInit() {
        console.log(this.banner)
    }
}

这是一个 plnkr使用当前 API 的示例。

关于javascript - Angular 2 beta.8 如何使用@Query?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36227633/

相关文章:

javascript - 如何使我的 sails 应用程序在 dev 中使用本地 js 和 css 依赖项并在 prod 中使用 cdn ?

javascript - 我应该从 HTMLProps<HTMLElement> 继承 react Prop 吗?

javascript - 在 Angular 中更改模型后如何更新 View ?

c# - 使用angular2将图像上传到asp.net core

angular - Material 2 : properly changing of mat-mini-fab size and icon size

Angular 2 Routing Guard CanActivateChild 与延迟加载模块路由

javascript - Kinetic.Tween 无法淡出不透明的文本

javascript - 如何等到图像在jquery中加载

javascript - 函数参数数组,如何影响reference = []或reference.concat(array2)?

angular - 类型 'finally' 上不存在属性 'Promise<void>'