- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在做 Angular Tour-hero 项目(将 Hero 替换为“用户”)。当我将 Hero(User) 和 Hero-detail(User-detail) 分开并尝试访问详细信息时,它没有显示,更新功能也不起作用。它显示此错误:
error TS2532: Object is possibly 'undefined'.
6 <input id="user-name" [(ngModel)]="user.name"placeholder="name">
user
对象,我认为,给出了问题。但是,当我尝试完全按照本教程添加 MessageService 和所有内容时,它起作用了。但是当我删除所有这些时,它给出了这个错误。预先感谢您的帮助。
用户详细信息.component.html:
<div>
<h2>{{user.name | uppercase}} Details</h2>
<div><span>id: </span>{{user.id}}</div>
<div>
<label for="user-name">User name: </label>
<input id="user-name" [(ngModel)]="user.name" placeholder="name">
</div>
<button (click)="goBack()">Back</button>
<button (click)="save()">Save</button>
</div>
user-detail.component.ts:
import { Component, OnInit } from '@angular/core';
import { User } from 'src/app/model/user';
import { UserService } from 'src/app/services/user/user.service';
import { Location } from '@angular/common';
import { ActivatedRoute } from '@angular/router';
@Component({
selector: 'app-user-detail',
templateUrl: './user-detail.component.html',
styleUrls: ['./user-detail.component.scss']
})
export class UserDetailComponent implements OnInit {
user?: User
constructor(
private userService: UserService,
private location: Location,
private route: ActivatedRoute
) { }
ngOnInit(): void {
this.getUser();
}
getUser(): void {
const id =
parseInt(this.route.snapshot.paramMap.get('id')!, 1);
this.userService.getUser(id)
.subscribe(user => this.user = user);
}
goBack(): void {
this.location.back();
}
save():void {
if(this.user){
this.userService.updateUser(this.user)
.subscribe(() => this.goBack())
}
}
}
用户服务.ts:
import { Injectable } from '@angular/core';
import { User } from 'src/app/model/user';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable, of } from 'rxjs';
import { catchError } from 'rxjs/operators';
@Injectable({
providedIn: 'root'
})
export class UserService {
private usersUrl = 'api/users/';
httpOptions = {
headers: new HttpHeaders({ 'Content-Type': 'application/json'})
};
getUsers(): Observable<User[]> {
return this.http.get<User[]>(this.usersUrl).pipe(
catchError(this.handleError<User[]>('getUsers',[]))
);
}
/** GET hero by id. Will 404 if id not found */
getUser(id: number): Observable<User> {
const url = `${this.usersUrl}/${id}`;
return this.http.get<User>(url).pipe(
catchError(this.handleError<User>(`getUser id=${id}`))
);
}
updateUser(user: User): Observable<any> {
return this.http.put(this.usersUrl, user, this.httpOptions)
.pipe(
catchError(this.handleError<User[]>('getUsers',[]))
);
}
addUser(user: User): Observable<User>{
return this.http.post<User>(this.usersUrl, user, this.httpOptions)
.pipe(
catchError(this.handleError<User>('addUser'))
)
}
deleteUser(id: number): Observable<User>{
const url = `${this.usersUrl}/${id}`;
return this.http.delete<User>(url, this.httpOptions).pipe(
catchError(this.handleError<User>('deleteUser'))
)
}
constructor(private http: HttpClient) { }
private handleError<T>(operation = 'operation', result?:T){
return (error: any): Observable<T> => {
console.error(error);
return of(result as T);
}
}
}
最佳答案
我相信这个错误是由于 typescript 2.1 或更高版本 引起的,您的代码非常完美!没有任何问题,但未初始化的变量减速方式可能会导致此错误,
现在如果你知道用户值或者你想用任何默认值初始化那么请像下面这样在构造函数中初始化你的用户变量
user: User;
constructor() {
this.user = {
id: 0,
name: ''
};
}
另一个解决方案是使用'Definite Assignment Assertion' 告诉 typescript 这个变量将在运行时有一个值,如下所示
组件.ts
user!: User;
还可以像下面这样对 component.html 文件进行更改
<div>
<h2>{{user?.name! | uppercase}} Details</h2>
<div><span>id: </span>{{user?.id!}}</div>
<div>
<label for="user-name">User name: </label>
<input id="user-name" [(ngModel)]="user?.name!" placeholder="name">
</div>
<button (click)="goBack()">Back</button>
<button (click)="save()">Save</button>
</div>
关于Angular::error TS2532:对象可能是 'undefined',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68615939/
我只是有一个更琐碎的问题。 为什么undefined == undefined 返回true,而undefined >= undefined 为false? undefined 等于 undefine
用PHP 7.2编写套接字服务器。根据Firefox 60中的“网络”选项卡,服务器的一些HTTP响应的第一行随机变为undefined undefined undefined。因此,我尝试记录套接字
在 JavaScript 中这是真的: undefined == undefined 但这是错误的: undefined <= undefined 起初我以为<=运算符包含第一个,但我猜它试图将其转换
在回答这个问题 (Difference between [Object, Object] and Array(2)) 时,我在 JavaScript 数组中遇到了一些我以前不知道的东西(具有讽刺意味的
来自https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/of , Note: thi
我正在运行 PHP 脚本并继续收到如下错误: Notice: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php
我正在运行 PHP 脚本并继续收到如下错误: Notice: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php
当我添加 到我的 PrimeFaces Mobile 页面,然后我在服务器日志中收到以下警告 WARNING: JSF1064: Unable to find or serve resource, u
我正在运行 PHP 脚本并继续收到如下错误: Notice: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php
我正在运行 PHP 脚本并继续收到如下错误: Notice: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php
我正在运行 PHP 脚本并继续收到如下错误: Notice: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php
我正在运行 PHP 脚本并继续收到如下错误: Notice: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php
我正在运行 PHP 脚本并继续收到如下错误: Notice: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php
我正在运行 PHP 脚本并继续收到如下错误: Notice: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php
我正在运行 PHP 脚本并继续收到如下错误: Notice: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php
我正在运行 PHP 脚本并继续收到如下错误: Notice: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php
我正在运行 PHP 脚本并继续收到如下错误: Notice: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php
我正在运行 PHP 脚本并继续收到如下错误: Notice: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php
我正在运行 PHP 脚本并继续收到如下错误: Notice: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php
我正在运行 PHP 脚本并继续收到如下错误: Notice: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php
我是一名优秀的程序员,十分优秀!