首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Typescript类继承

Typescript类继承
EN

Stack Overflow用户
提问于 2019-02-05 18:43:04
回答 1查看 51关注 0票数 0

我不确定我这样做是不是对的。我需要创建一个基类,以便我的控件可以继承它。所以我做了这个基类:

代码语言:javascript
复制
import { Location } from '@angular/common';

export class FormBaseComponent  {
  constructor(
    protected location: Location
  ) {}

  goBack() {
    alert('back');
    this.location.back();
  }

}

以及一个继承自它的类:

代码语言:javascript
复制
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“参数正确吗?

代码语言:javascript
复制
  location: Location
) {
  super(location);
} 

顺便说一句,这段代码可以正常工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-05 18:48:02

super用于将参数从派生类发送到基类构造函数。如果这是你的困惑,这是正确的方式。

(这可能是super关键字的唯一用法!)

另外,如果你没有给出像publicprivate这样的修饰符,你可以接受不是给定类一部分的参数。因此,您的代码确实是它应该工作的方式。

本质上,modifier创建新的类元素classVar并将提供给构造函数的参数classVar分配给this.classVar ie,

代码语言:javascript
复制
class Sample {
    classVar: number;
    constructor(classVar : number) {
         this.classVar = classVar
    }

将等同于

代码语言:javascript
复制
class Sample {
    constructor(public classVar : number) {
    }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54532622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档