我遇到了以下问题:当我导航到或通过浏览器刷新时,通过AuthGuard服务保护的个人部分被加载两次.如果我提供任何URL,它第二次剥离URL的查询参数.这是我的app路由器配置:
const routes: Routes = [
{
path: 'search',
redirectTo: '',
pathMatch: 'full'
},
{
path: '',
component: BookmarksComponent
},
{
path: 'tagged/:tag',
component: TagComponent
},
{
path: 'about',
component: AboutComponent
},
{
path: 'personal',
loadChildren: 'app/personal/personal-bookmarks.module#PersonalBookmarksModule'
}
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule {}
Run Code Online (Sandbox Code Playgroud)
和子路由器配置
@NgModule({
imports: [RouterModule.forChild([
{
path: '',
component: PersonalBookmarksComponent,
canActivate: [AuthGuard],
children: [
{
path: '',
component: PersonalBookmarksListComponent
},
{
path: 'new',
component: NewPersonalBookmarkFormComponent
},
{
path: …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用我从服务获得的值更新表单的值名称,一旦填充了位置字段.我通过观察表单对象的valueChanges来尝试这个.虽然价值不再改变,但它仍然可以连续发射.在debounceTime()和distinctUntilChanged()有没有影响:
bookmarkForm: FormGroup;
ngOnInit(): void {
this.bookmarkForm = this.formBuilder.group({
name: ['', Validators.required],
location: ['', Validators.required],
description:'',
shared: false
});
this.bookmarkForm.valueChanges
//.debounceTime(800)
//.distinctUntilChanged()
.subscribe(formData => {
if(formData.location){
console.log('location changed', formData);
this.bookmarkService.getBookmarkTitle(formData.location).subscribe(response => {
console.log('Response: ', response);
if(response){
this.bookmarkForm.patchValue({name:response.title}, {emitEvent: false});
}
});
}
});
}
Run Code Online (Sandbox Code Playgroud)
html模板
<div class="container">
<div class="col-md-8 col-md-offset-2">
<form [formGroup]="bookmarkForm" novalidate (ngSubmit)="saveBookmark(bookmarkForm.value, bookmarkForm.valid)">
<div class="form-group">
<label for="location">Location*</label>
<input type="text" class="form-control" id="location"
required
name="location"
formControlName="location"
placeholder="Usually an URL">
<div …Run Code Online (Sandbox Code Playgroud) 构建我的角度应用程序进行生产时(ng服务没有问题)我在加载其中一个子模块时遇到以下错误:
ERROR Error: Uncaught (in promise): TypeError: o.ngOnDestroy is not a function
TypeError: o.ngOnDestroy is not a function
at Fi (core.js.pre-build-optimizer.js:9573)
at Mi (core.js.pre-build-optimizer.js:9541)
at Ri (core.js.pre-build-optimizer.js:9531)
at fo (core.js.pre-build-optimizer.js:10593)
at go (core.js.pre-build-optimizer.js:10719)
at vo (core.js.pre-build-optimizer.js:10662)
at fo (core.js.pre-build-optimizer.js:10591)
at go (core.js.pre-build-optimizer.js:10719)
at mo (core.js.pre-build-optimizer.js:10641)
at fo (core.js.pre-build-optimizer.js:10592)
at Fi (core.js.pre-build-optimizer.js:9573)
at Mi (core.js.pre-build-optimizer.js:9541)
at Ri (core.js.pre-build-optimizer.js:9531)
at fo (core.js.pre-build-optimizer.js:10593)
at go (core.js.pre-build-optimizer.js:10719)
at vo (core.js.pre-build-optimizer.js:10662)
at fo (core.js.pre-build-optimizer.js:10591)
at go (core.js.pre-build-optimizer.js:10719)
at mo (core.js.pre-build-optimizer.js:10641)
at fo (core.js.pre-build-optimizer.js:10592)
at P …Run Code Online (Sandbox Code Playgroud)