我觉得我正在关注Query / QueryList的文档,但我仍然得到错误“(SystemJS)装饰器不是一个函数。”
我是否正确定义了Query和QueryList?
import { Directive, OnInit, OnDestroy, Input, Output, HostBinding,
EventEmitter, ElementRef, ContentChildren, ViewChildren,
Query, QueryList } from '@angular/core';
import { DropdownMenuInterface } from './dropdown.interface';
import { DropdownToggleInterface } from './dropdown.interface';
import { dropdownService, NONINPUT} from './dropdown.service';
@Directive({selector: '[dropdown]'})
export class Dropdown implements OnInit, OnDestroy {
......
// index of selected element
public selectedOption:number;
// drop menu html
public menuEl:ElementRef;
// drop down toggle element
public toggleEl:ElementRef;
dropdownMenuList: QueryList<ElementRef>;
constructor(public el:ElementRef,
@Query('dropdownMenu') dropdownMenuList: QueryList<ElementRef>) {
}
public set isOpen(value) {
this._isOpen = !!value;
.....
}
答案 0 :(得分:0)
Query
和QueryList
都不是装饰器,而是类型(或类)。
我认为@ViewChildren
设置了一个私有属性,根据传递给它的Query
进行更新(我认为Query
是您需要发送给它的对象类型查询装饰器(@ViewChildren
,@ViewChild
,@ContentChild
和@ContentChildren
)。
如果您使用查询装饰器的QueryList
(非Children
)变体之一,则Child
是属性的类型。