PrimeNG TypeError "this._activeIndex.includes" 不是函数
PrimeNG TypeError "this._activeIndex.includes" is not a function
我有一个组件,我在其中使用 accordion.I 想要启用多个选项卡和自定义 activeIndex。
这是我的代码:
<p-accordion [activeIndex]="index" [multiple]="true">
<p-accordionTab header="1st tab">
1st tab content
</p-accordionTab>
<p-accordionTab header="2nd tab">
2nd tab content
</p-accordionTab>
</p-accordion>
这是我的组件class
@Component({
selector: 'app-panel',
templateUrl: './panel.component.html',
styleUrls: ['./panel.component.css']
})
export class PanelComponent implements OnInit {
index:number = 1;
constructor() {
}
ngOnInit() {
//this.index = 0;
}
}
如果我想同时包含 [activeIndex] 和 [multiple],就会出现问题。知道为什么会这样吗?
我使用 PrimeNG 7 和 angular 7
您不能同时使用两者。非此即彼。
multiple
:启用后,可同时激活多个标签页。
activeIndex
:活动选项卡的索引或以编程方式更改所选选项卡的索引数组。
由于他们的工作方式,他们会相互矛盾。一种是多开,一种是只开一个。
https://www.primefaces.org/primeng/#/accordion
例如:
假设您有一个函数 openDoor()
和一个函数 closedDoor()
如果您在 SAME TIME 使用它们,它们将相互矛盾其他.
这就是你需要的:
<p-accordion [multiple]="true" >
<p-accordionTab header="Header 1" [selected]="true">
Content 1
</p-accordionTab>
<p-accordionTab header="Header 2">
Content 2
</p-accordionTab>
<p-accordionTab header="Header 3">
Content 3
</p-accordionTab>
</p-accordion>
文档说:
Index of the active tab or an array of indexes to change selected tab
programmatically.
这里是 related code,它从 _activeIndex
设置 activeTabs
updateSelectionState() {
if (this.tabs && this.tabs.length && this._activeIndex != null) {
for (let i = 0; i < this.tabs.length; i++) {
let selected = this.multiple ? this._activeIndex.includes(i) : (i === this._activeIndex);
let changed = selected !== this.tabs[i].selected;
if (changed) {
this.tabs[i].animating = true;
}
this.tabs[i].selected = selected;
this.tabs[i].selectedChange.emit(selected);
}
}
}
因此,对于多个选项卡,您应该使用索引数组,而不是数字。
@Component({
selector: 'app-panel',
templateUrl: './panel.component.html',
styleUrls: ['./panel.component.css']
})
export class PanelComponent implements OnInit {
indices: number[] = [1, 2];
constructor() {
}
ngOnInit() {
//this.index = 0;
}
}
如果您想知道,this._activeIndex.includes(i)
这就是您的错误来源。
我有一个组件,我在其中使用 accordion.I 想要启用多个选项卡和自定义 activeIndex。 这是我的代码:
<p-accordion [activeIndex]="index" [multiple]="true">
<p-accordionTab header="1st tab">
1st tab content
</p-accordionTab>
<p-accordionTab header="2nd tab">
2nd tab content
</p-accordionTab>
</p-accordion>
这是我的组件class
@Component({
selector: 'app-panel',
templateUrl: './panel.component.html',
styleUrls: ['./panel.component.css']
})
export class PanelComponent implements OnInit {
index:number = 1;
constructor() {
}
ngOnInit() {
//this.index = 0;
}
}
如果我想同时包含 [activeIndex] 和 [multiple],就会出现问题。知道为什么会这样吗?
我使用 PrimeNG 7 和 angular 7
您不能同时使用两者。非此即彼。
multiple
:启用后,可同时激活多个标签页。
activeIndex
:活动选项卡的索引或以编程方式更改所选选项卡的索引数组。
由于他们的工作方式,他们会相互矛盾。一种是多开,一种是只开一个。
https://www.primefaces.org/primeng/#/accordion
例如:
假设您有一个函数 openDoor()
和一个函数 closedDoor()
如果您在 SAME TIME 使用它们,它们将相互矛盾其他.
这就是你需要的:
<p-accordion [multiple]="true" >
<p-accordionTab header="Header 1" [selected]="true">
Content 1
</p-accordionTab>
<p-accordionTab header="Header 2">
Content 2
</p-accordionTab>
<p-accordionTab header="Header 3">
Content 3
</p-accordionTab>
</p-accordion>
文档说:
Index of the active tab or an array of indexes to change selected tab programmatically.
这里是 related code,它从 _activeIndex
updateSelectionState() {
if (this.tabs && this.tabs.length && this._activeIndex != null) {
for (let i = 0; i < this.tabs.length; i++) {
let selected = this.multiple ? this._activeIndex.includes(i) : (i === this._activeIndex);
let changed = selected !== this.tabs[i].selected;
if (changed) {
this.tabs[i].animating = true;
}
this.tabs[i].selected = selected;
this.tabs[i].selectedChange.emit(selected);
}
}
}
因此,对于多个选项卡,您应该使用索引数组,而不是数字。
@Component({
selector: 'app-panel',
templateUrl: './panel.component.html',
styleUrls: ['./panel.component.css']
})
export class PanelComponent implements OnInit {
indices: number[] = [1, 2];
constructor() {
}
ngOnInit() {
//this.index = 0;
}
}
如果您想知道,this._activeIndex.includes(i)
这就是您的错误来源。