类型字符串不能分配给类型编号

时间:2020-09-18 09:39:54

标签: angular angular-ui-router

我是新来的有角度的人,我对此错误有疑问:

类型字符串不能分配给类型编号

这是我的文件的样子:

novo-fizicko-lice.component.ts

import { Component, OnInit } from '@angular/core';
import { FormControl } from '@angular/forms';
import { ApiService } from '../api.service';
import { FizickoLice } from '../klase/fizicko-lice';

@Component({
  selector: 'app-novo-fizicko-lice',
  templateUrl: './novo-fizicko-lice.component.html',
  styleUrls: ['./novo-fizicko-lice.component.css']
})
export class NovoFizickoLiceComponent implements OnInit {

  prezime: string = "";
  ime: string = "";
  imeOca: string = "";
  jmb: string = "";
  mjestoStanovanja: string = "";
  napomena: string = "";
  datum: Date;
  obustavljenaIstraga: boolean;

  upisanoFizickoLice: FizickoLice;
  novoFizckoLiceForma = new FormControl();
  constructor(private api: ApiService) { }

  ngOnInit() {
  }

  public adduser() {
    console.log("test clikc");

    this.datum = new Date;

    const novoFizickoLice: FizickoLice = {
      Ime: this.ime,
      Prezime: this.prezime,
      ImeOca: this.imeOca,
      JMB: this.jmb,
      MjestoStanovanja: this.mjestoStanovanja,
      Napomena: this.napomena,
      DatumUnosenjaLica: this.datum,
      ObustavljenaIstraga: this.obustavljenaIstraga
    };

    this.api.AddNewUser(novoFizickoLice).subscribe(data => {
      console.log(data);
      this.upisanoFizickoLice = data;

    });

  }

}

fizicko-lice.ts

export interface FizickoLice {
  Ime: string;
  Prezime: string;
  ImeOca: string;
  JMB: number; 
  MjestoStanovanja: string;
  DatumUnosenjaLica: Date | string;
  Napomena: string;
  ObustavljenaIstraga: boolean;
}

此文件novo-fizicko-lice出现错误。 component.this在线

JMB:this.jmb,

我该如何解决?

3 个答案:

答案 0 :(得分:1)

您正在尝试在Number类型中附加一个String值。也许您在引号之间使用数字,例如'1'"2",而TS会将其识别为字符串。

答案 1 :(得分:0)

好吧,错误说明了一切:

NovoFizickoLiceComponent::jmb被声明为string,但是FizickoLice::JMBnumber。并且,当您在new FizickoLice方法中创建addUser时,会尝试使用不允许的字符串jmb来初始化数字JMB

您应该将NovoFizickoLiceComponent::jmb的类型更改为number

jmb: number = 0;

或在分配之前将字符串转换为数字

JMB: +(this.jmb)

答案 2 :(得分:0)

您的问题来自变量jmb。 在界面FizickoLice中,您将JMB声明为数字。 在您的组件中,为它分配一个字符串。

const novoFizickoLice: FizickoLice = {
  Ime: this.ime,
  Prezime: this.prezime,
  ImeOca: this.imeOca,
  JMB: this.jmb, <---- Here, this.jmb is a string.
  MjestoStanovanja: this.mjestoStanovanja,
  Napomena: this.napomena,
  DatumUnosenjaLica: this.datum,
  ObustavljenaIstraga: this.obustavljenaIstraga
};

创建变量时只需更改类型。 jmb: number;