我有一个字段" name"在一个表中,它是连接名字,第一个姓氏和第二个姓氏的结果("名称第一个第二个")。我试图用名称的任何元素过滤查询。对于名字我用这个:
UserService
第二姓:
// UserLoginComponent
@Component({
selector: 'app-home-login',
templateUrl: './home-login.component.html',
styleUrls: ['./home-login.component.scss']
})
export class HomeLoginComponent implements OnInit {
@Input() userModel: UserModel;
loggedinUser: UserModel;
userloginForm: FormGroup;
// it doesn't work if it is only 1 Subject (loginListener) used for both userLogin and sessionLogin
loginListener: Subject<UserModel>;
loginListenerSubs: Subscription;
// it will work if I have another Subject (sessionListener) which is used separately for sessionLogin
// sessionListener: Subject<UserModel>;
// sessionListenerSubs: Subscription
constructor(private fb: FormBuilder,
private router: Router,
private userService: UserService
) {
this.createForm();
}
createForm() {
this.userloginForm = this.fb.group({
username: [ '', Validators.required ],
password: [ '', Validators.required ]
});
}
onSubmitLogin() {
this.userModel = this.pullFormContent();
this.userService.userLogin(this.userModel.username, this.userModel.password, this.loginListener);
// same result if it is placed here as well
// this.loginListenerSubs = this.loginListener.subscribe(
// user => this.onLoginSuccess(user),
// error => this.onLoginFailed(error),
// () => this.onLoginCompleted()
// );
}
pullFormContent() {
const formModel = this.userloginForm.value;
console.log("home-login component: pullformContent formModel");
console.log(formModel);
const user: UserModel = {
userid: 0,
username: formModel.username,
password: formModel.password,
}
return user;
}
onLoginSuccess(user) {
console.log("loginListener next"); // never get called the second api call
console.log(user);
this.loggedinUser = user;
console.log(this.loggedinUser);
if ( this.router == null ) {
console.log("router is null");
} else {
this.router.navigate(['/some/user/view']);
}
}
onLoginFailed(error) {
console.log("loginListener error: " + error);
}
onLoginCompleted() {
console.log("loginListener complete");
}
ngOnInit() {
console.log("home-login-component ngOnInit");
this.loginListener = new Subject<UserModel>();
this.loginListenerSubs = this.loginListener.subscribe(
user => this.onLoginSuccess(user),
error => this.onLoginFailed(error),
() => this.onLoginCompleted()
);
// try to login automatically
this.userService.sessionLogin(this.loginListener);
if ( this.userService.isLoggedIn() ) {
console.log("user is logged in, todo: auto redirect");
this.router.navigate(['/some/user/view']);
}
}
ngOnDestroy() {
console.log("ngOnDestroy");
this.loginListenerSubs.unsubscribe();
}
}
但我不知道如何过滤第一个姓氏。如果我使用MatchMode.Anywhere并将第二个姓氏放在第一个姓氏输入中,它就可以了,但这不应该发生。
有没有办法在确切位置搜索第一个姓氏?