Angular TypeError:无法读取属性';滑雪比赛';未定义的
我看到我的属性是未定义的,因此我得到了这个错误,但我不确定我需要在这里修复什么。我想使用angular的*hasPermission指令,为此,我需要将权限放在命名权限数组中。类似于Angular TypeError:无法读取属性';滑雪比赛';未定义的,angular,typescript,angular-reactive-forms,Angular,Typescript,Angular Reactive Forms,我看到我的属性是未定义的,因此我得到了这个错误,但我不确定我需要在这里修复什么。我想使用angular的*hasPermission指令,为此,我需要将权限放在命名权限数组中。类似于权限:['can_read','can_write']我正试图初始化我的表单,它必须正确键入。我不确定我到底在哪里犯了错误,非常感谢任何帮助。这是我的密码 export class AddMemberComponent extends AppBaseComponent implements OnInit { pu
权限:['can_read','can_write']
我正试图初始化我的表单,它必须正确键入。我不确定我到底在哪里犯了错误,非常感谢任何帮助。这是我的密码
export class AddMemberComponent extends AppBaseComponent implements OnInit {
public activeRoute: string;
private userId: string;
private userData: Customer;
public userDetailsForm: FormGroup;
public permission: {
skipTracing: { permissions: [] };
affiliates: { permissions: [] };
integrations: { permissions: [] };
} = null;
public timeZoneList: TimeZone[] = TIMEZONE;
public roles = [];
public isFormLoaded = false;
constructor(
private inj: Injector,
private route: ActivatedRoute,
private teamService: TeamService
) {
super(inj);
this.route.url.subscribe((routeParams) => {
this.activeRoute = routeParams[1].path;
if (this.activeRoute === 'edit') {
this.navigationState.breadCrums = [
new BreadCrumb('Settings', USER_NAVIGATION_LINKS.settings),
new BreadCrumb('Team', USER_NAVIGATION_LINKS.team),
new BreadCrumb('Edit'),
];
} else {
this.navigationState.breadCrums = [
new BreadCrumb('Settings', USER_NAVIGATION_LINKS.settings),
new BreadCrumb('Team', USER_NAVIGATION_LINKS.team),
new BreadCrumb('Add'),
];
}
});
this.navigationService.updateNavigationState(this.navigationState);
}
/**
* @ngdoc method
* @description
* A lifecycle hook that is called after Angular has
* initialized all data-bound properties of a directive.
* @returns void
*/
public ngOnInit(): void {
this.route.url.subscribe((routeParams) => {
this.blockUI.startLoader();
this.activeRoute = routeParams[1].path;
if (this.activeRoute === 'edit') {
this.route.paramMap.subscribe((params) => {
this.userId = params.get('id');
this.getUserDetails(this.userId);
});
} else {
this.initForm();
this.blockUI.stopLoader();
}
});
}
/**
* @ngdoc method
* @description
* init from with validation
*/
private initForm() {
this.userDetailsForm = this.formBuilder.group(
{
memberFirstName: [
'',
ValidationUtil.requiredNonSpace,
ValidationUtil.onlyAlphabets,
],
memberLastName: [
'',
ValidationUtil.requiredNonSpace,
ValidationUtil.onlyAlphabets,
],
memberEmail: [
'',
[ValidationUtil.requiredNonSpace, ValidationUtil.validateEmail],
],
memberMobileNumber: [
'',
[
ValidationUtil.requiredNonSpace,
Validators.minLength(10),
Validators.maxLength(10),
],
],
memberPassword: [''],
memberConfirmPassword: [''],
timezone: ['', ValidationUtil.requiredNonSpace],
randomPassword: [true],
sendEmail: [true],
isActive: [true],
selectAll: [false],
skipTracing: this.initPermissions(
// Receiving error here
this.permission.skipTracing.permissions,
'skipTracing'
),
affiliates: this.initPermissions(
this.permission.affiliates.permissions,
'affiliates'
),
integrations: this.initPermissions(
this.permission.integrations.permissions,
'integrations'
),
},
{
validator: ValidationUtil.MustMatch(
'memberPassword',
'memberConfirmPassword'
),
}
);
if (this.activeRoute === 'edit') {
this.prepareFormWithData();
}
this.isFormLoaded = true;
}
}
您可以使用空数组初始化权限:
公共权限={
skipTracing:{权限:[]},
附属机构:{权限:[]},
集成:{权限:[]}
};
或者,可以在函数调用中使用空数组作为回退值:
skipTracing:this.init权限(
此.permission?.skipTracing.permissions???[],
“滑雪比赛”
),
附属公司:this.init权限(
此.permission?.affiliates.permissions???[],
“附属公司”
),
集成:this.initPermissions(
此.permission?.integrations.permissions???[],
“集成”
),