как отправить идентификатор объекта в angular машинопись - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть машинопись, которая вызывает API-интерфейс, как показано ниже:

this._userService.createOrUpdateUser(input)
.pipe(finalize(() => { this.saving = false; }))
.subscribe(() => {
this.notify.info(this.l('SavedSuccessfully'));
this.close();
this.modalSave.emit(null);
});

Мои C точные коды, как показано ниже:

public async Task CreateOrUpdateUser(CreateOrUpdateUserInput input)
{
if (input.User.Id.HasValue)
{
 await UpdateUserAsync(input);
}
else
 {
  await CreateUserAsync(input);
 }
}

CreateUserAsyn c (вход ), как показано ниже:

    protected virtual async Task CreateUserAsync(CreateOrUpdateUserInput input)
    {
        if (AbpSession.TenantId.HasValue)
        {
            await _userPolicy.CheckMaxUserCountAsync(AbpSession.GetTenantId());
        }

        var user = ObjectMapper.Map<User>(input.User); //Passwords is not mapped (see mapping configuration)
        user.TenantId = AbpSession.TenantId;

        //Set password
        if (input.SetRandomPassword)
        {
            var randomPassword = await _userManager.CreateRandomPassword();
            user.Password = _passwordHasher.HashPassword(user, randomPassword);
            input.User.Password = randomPassword;
        }
        else if (!input.User.Password.IsNullOrEmpty())
        {
            await UserManager.InitializeOptionsAsync(AbpSession.TenantId);
            foreach (var validator in _passwordValidators)
            {
                CheckErrors(await validator.ValidateAsync(UserManager, user, input.User.Password));
            }

            user.Password = _passwordHasher.HashPassword(user, input.User.Password);
        }

        user.ShouldChangePasswordOnNextLogin = input.User.ShouldChangePasswordOnNextLogin;

        //Assign roles
        user.Roles = new Collection<UserRole>();
        foreach (var roleName in input.AssignedRoleNames)
        {
            var role = await _roleManager.GetRoleByNameAsync(roleName);
            user.Roles.Add(new UserRole(AbpSession.TenantId, user.Id, role.Id));
        }

        CheckErrors(await UserManager.CreateAsync(user));
        await CurrentUnitOfWork.SaveChangesAsync(); //To get new user's Id.

        //Notifications
        await _notificationSubscriptionManager.SubscribeToAllAvailableNotificationsAsync(user.ToUserIdentifier());
        await _appNotifier.WelcomeToTheApplicationAsync(user);

        //Organization Units
        await UserManager.SetOrganizationUnitsAsync(user, input.OrganizationUnits.ToArray());

        //Send activation email
        if (input.SendActivationEmail)
        {
            user.SetNewEmailConfirmationCode();
            await _userEmailer.SendEmailActivationLinkAsync(
                user,
                AppUrlService.CreateEmailActivationUrlFormat(AbpSession.TenantId),
                input.User.Password
            );
        }
    }

Я попытался установить сигнатуру метода в Task и возвратил user.id. Но на стороне машинописного текста он, похоже, не получает идентификатор.

Кто-нибудь знает, как я могу получить идентификатор, когда вызывается функция CreateUserAsyn c?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...