我不确定我这样做是不是对的。我需要创建一个基类,以便我的控件可以继承它。所以我做了这个基类:
import { Location } from '@angular/common';
export class FormBaseComponent {
constructor(
protected location: Location
) {}
goBack() {
alert('back');
this.location.back();
}
}以及一个继承自它的类:
import { Component, OnInit } from '@angular/core';
import {
FormBuilder
} from '@angular/forms';
import { UserService } from 'app/shared/services/user/user.service';
import { User } from 'app/models/authentication/user';
import { Router } from '@angular/router';
import { Location } from '@angular/common';
import { FormBaseComponent } from 'app/shared/components/form-base.component';
@Component({
selector: 'app-my-account',
templateUrl: './my-account.component.html',
styleUrls: ['./my-account.component.scss']
})
export class MyAccountComponent extends FormBaseComponent implements OnInit {
formEdit = this.fb.group(User.formGroup());
constructor(
private fb: FormBuilder,
private userServices: UserService,
private router: Router,
location: Location
) {
super(location);
}
ngOnInit() {
this.userServices.getCurrentUser().subscribe( x => {
this.formEdit.patchValue(x);
});
}
onSubmit() {
this.userServices.update(this.formEdit.getRawValue()).subscribe( x => {
this.router.navigate(['/']);
});
}
}在构造函数中声明这个"location“参数正确吗?
location: Location
) {
super(location);
} 顺便说一句,这段代码可以正常工作。
发布于 2019-02-05 18:48:02
super用于将参数从派生类发送到基类构造函数。如果这是你的困惑,这是正确的方式。
(这可能是super关键字的唯一用法!)
另外,如果你没有给出像public或private这样的修饰符,你可以接受不是给定类一部分的参数。因此,您的代码确实是它应该工作的方式。
本质上,modifier创建新的类元素classVar并将提供给构造函数的参数classVar分配给this.classVar ie,
class Sample {
classVar: number;
constructor(classVar : number) {
this.classVar = classVar
}将等同于
class Sample {
constructor(public classVar : number) {
}https://stackoverflow.com/questions/54532622
复制相似问题