pnp/sp 中必需的 属性 PeoplePicker 不工作

Required property in pnp/sp PeoplePicker not working

我对 pnp/sp PeoplePicker 有疑问。 PeoplePicker 有 属性“必需”,但当我在我的表单中使用它时,它会被忽略。

这是我的 PeoplePicker 代码:

<PeoplePicker
required={true}
context={this.props.spContext}
personSelectionLimit={1}
onChange={this.hcRequestorPP}
showHiddenInUI={false}
principalTypes={[PrincipalType.User]}
ensureUser={true}
resolveDelay={1000}
defaultSelectedUsers={this.props.pRequestor}
disabled={false} />

我做错了什么?

你好, 你没有做错任何事 :-) 根据我的知识,需要 属性 在人员选择器标签旁边放置星号 - 仅此而已。

如果用户在人员选择器字段中输入了某些内容,如果您想在表单中进行检查,则必须自行检查。

我的表格版本是:

  1. 每个表单值都存储在状态中。
  2. 每个表单字段及其定义(名称、类型、必填...)都存储在 props(或 state 或 const 等)中。
  3. 在提交表单之前,我正在检查是否填写了每个必填值(代码如下)
  4. 如果没有填写我把错误信息放在这个字段下面。

开始的好例子在这里:https://github.com/pnp/sp-dev-fx-webparts/tree/master/samples/react-list-form

需要检查

let requiredError: boolean = false;
let fieldErrors: { [fieldName: string]: string } = {...this.state.fieldErrors};
// check required
for (let i: number = 0; i < this.state.fieldsSchema.length; i++) {
  if ((this.state.fieldsSchema[i].Required) && (!this.state.data[this.state.fieldsSchema[i].InternalName]) && (this.state.fieldsSchema[i].InternalName !== 'Aktivita')) {
    requiredError = true;
    fieldErrors = {
      ...fieldErrors,
      [this.state.fieldsSchema[i].InternalName]: strings.FormFields.RequiredValueMessage
    };
  }
}
if (requiredError === true) {
  this.setState({
    ...this.state,
    fieldErrors: fieldErrors,
    requiredFieldEmpty: requiredError
  });
  return;
}