0

我在 SPFx webpart 中使用 PnPJS,其中我有一种方法可以为多个列表中的特定项目设置自定义项目级别权限。我的代码如下:

let listIds: string[] = [
    "LISTGUID1",
    "LISTGUID2"
];

for (const listId of listIds) {
    const listItems: Item[] = await sp.web.lists
        .getById(listId)
        .items
        .filter(`LookupFieldId eq ${lfId}`)
        .get();

    if (Validate.ArrayWithElements(listItems)) {
        for (const item of listItems) {
            await item.breakRoleInheritance(false);
            await item.roleAssignments.add(userId, roleDefId);
        }
    }
}

我在以下行出现错误:

await item.breakRoleInheritance(false, false);

错误信息如下:

Uncaught (in promise) TypeError: item.breakRoleInheritance is not a function

当我将结果显式转换为 type 时,它​​也不起作用Item。类Item扩展SharePointQueryableShareableItemSharePointQueryableShareableItem扩展SharePointQueryableSecurable。该方法在后者中定义。

4

1 回答 1

2

我刚刚通过在我的库组件中添加导入解决了这个问题:

import "@pnp/sp/security/web";
import "@pnp/sp/security/list";
import "@pnp/sp/security/item";

来源:https ://github.com/pnp/pnpjs/issues/1250

于 2020-08-14T19:38:29.737 回答