1.安装

安装Angular脚手架

cnpm install -g @angular/cli

创建一个angular项目

ng new 项目名  --skip-install 

如果不跳过安装,ng会自动进行依赖下载,可能会比较慢。我们需要增加–skip-install后缀取消依赖安装,然后通过cnpm去阿里的镜像地址进行下载

cnpm install

运行项目

ng serve --open

2.Angular目录结构

  • node_modules:存放项目所需的各种依赖
  • package.json:项目的配置文件
  • tsconfig.json:typescript配置文件
  • browserlist:支持浏览器的配置文件
  • style.css:全局css文件
  • src:
    • app:存放组件和模块
      • app.component.ts:根组件
      • app.module.ts 根模块
      • app.component.ts:根组件对应的html模板
      • app.component.ts:根组件对应的css文件
      • app.routing.module.ts:根组件的路由模块
    • assets:静态资源文件
    • environments:环境相关的文件
    • index.html:入口文件
    • main.ts:项目入口

3 @NgModule

该装饰器用于接收一个元数据对象,告诉angular如何编译和启动应用

该装饰器等于一个angular模块,下面是我们创建angualr项目时的根模块app.module.ts

如果我们需要创建一个自定义模块,可以使用以下命令

ng g module 目录/模块名称
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';import { AppComponent } from './app.component';
import { PersonlistComponent } from './components/personlist/personlist.component';@NgModule({declarations: [AppComponent,PersonlistComponent],imports: [BrowserModule],providers: [],bootstrap: [AppComponent]
})

@NgModule元数据解析

  • declarations:配置当前项目运行的组件
  • imports:配置当前模块运行依赖的其他模块
  • providers:配置项目所需的服务
  • bootstrap:指定应用的主视图(跟模块)

4 @Component

@Compnent代表一个组件,一个模块中由多个组件构成,一个页面也是由多个组件构成

下面是根模块中根组件的@Compnent示例

@Component({selector: 'app-root',templateUrl: './app.component.html',styleUrls: ['./app.component.css']
})

@Component元数据解析

  • selector:指令名称,我们在html中需要使用某个组件时通过app-root标签来引入
  • templateUrl:组件对应的的html模板
  • styleUrls:组件的css文件

创建组件
在angular中创建任何部分都是通过命令行的形式增加,因为每个组件、服务、模块都对应多个文件,所以我们需要通过命令的形式一次性增加一组文件,并在根模块中引入新增组件的依赖(组件会自动引入,服务不会)

ng g component 目录/组件名

该目录会默认创建到到app目录下,如果我们app下有多个模块,则需要在对应模块的目录下创建组件
当我们创建完组件后,组件对应的类会被引入到对应模块中,并添加到declarations参数中,只有这样添加到该参数中,我们才能在该模块的其他组件中使用目标组件

5.数据绑定和指令

5.1单向绑定

  • [ ]:单向动态绑定属性
  • {{}}:表达式把数据绑定到 HTML,其中可以包含简单表达式

下面是[]的一个例子

<!--[]-->
<label [title]="title">aaa</label>

上面[title]="title"表示将我们组件类中的title绑定到label标签中的title属性中,如果组件类中的title发生变化,label中的title的值也会修改。
我们如果需要将组件类中的某个成员变量的值绑定到某个属性中就使用该表达式 [属性名] = "成员变量"

下面是{{}}插值表达式的一个例子,它与上面[]的效果差不多,但是不同的是它不一定要绑定到属性中,可以直接在html页面中当作普通文本去使用

<!--{{}}-->
<label>{{title}}</label>

上面表达式会将{{title}}替换为组件类中title对应的值
插值表达式中还能放入一些简单表达式,例如1+1,但是不能涉及引用相关的复杂表达式,所以不要乱用

5.2 双向绑定

angualr的双向绑定用于表单控件,首先将表单控件与组件的某个成员遍历绑定,某一方发生变化时,另一方也跟着变化

1.要使用双向绑定,首先我们需要在模块中引入表单模块import { FormsModule } from ‘@angular/forms’;并在模块中的imports属性中引入该模块

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import {FormsModule} from '@angular/forms';import { AppComponent } from './app.component';
import { PersonlistComponent } from './components/personlist/personlist.component';
import { FormComponent } from './components/form/form.component';
import { ToListComponent } from './components/to-list/to-list.component';@NgModule({declarations: [AppComponent,PersonlistComponent,FormComponent,ToListComponent],imports: [BrowserModule,FormsModule],providers: [],bootstrap: [AppComponent]
})
export class AppModule { }

当我们完成表单模块的引入后,我们就可以在该模块中使用双向绑定指令[(ngModel)]

2.通过[(ngModel)]进行双向绑定

<div><div class="item">姓名:<input type="text" [(ngModel)]="result.username"></div><div class="item">性别:男<input type="radio" value="1" name="gender" [(ngModel)]="result.gender"><input type="radio" value="0" name="gender" [(ngModel)]="result.gender"></div><div class="item">居住城市:<select [(ngModel)]="result.city"><option *ngFor="let city of cities" [value]="city">{{city}}</option></select></div><div class="item">兴趣:<span *ngFor="let hobby of result.hobbies;let key = index"><input type="checkbox" [id]="'check'+key" checked="hobby.check" [(ngModel)]="hobby.check">{{hobby.name}}</span></div><div class="item">data:{{result|json}}</div>
</div>

不同的表单组件有不同的表现

  • text:将value值(输入框内的值)绑定到目标变量上
  • radio:将value值(我们选中的radio对应的value)绑定到目标变量上,注意多个raido都需要双向绑定,且绑定到同一个变量上
  • select:将下拉框选择的value(我们下拉框选中的当前值的value)绑定到变量中,只需要在select中双向绑定即可
  • checkbox:将多选框是否被选中的布尔值绑定到目标变量上,注意多个checkbox都需要双向绑定

5.3 *ngFor

*ngFor在angular中用来进行for循环
personlist.component.html

<ul><li *ngFor="let person of persons">{{person.name}}---{{person.age}}</li>
</ul>

personlist.component.ts

import { Component, OnInit } from '@angular/core';@Component({selector: 'app-personlist',templateUrl: './personlist.component.html',styleUrls: ['./personlist.component.css']
})
export class PersonlistComponent implements OnInit {persons:any[] = [{name:"张三",age:44},{name:"李四",age:33}]constructor() { }ngOnInit(): void {}}

在personlist.component.ts文件中我们可以看到组件类中存在一个叫做persons的数组对象,里面包含两个对象,所以在组件对应的html模板中(personlist.component.html)我们通过*ngFor去对该数组进行遍历显示。*ngFor="let person of persons"中就是使用我们的for of表达式进行操作
我们在ngFor中取出的person的作用域就在ngFor指定对应的标签范围内,比如上面的而例子中,person的作用域就在li标签的包围中

5.4 *ngIf

angular通过ngIf进行条件判断
下面是一个
ngIf的一个简单例子

<div *ngIf="flag">hello world</div>

当我们flag的值为false时,该div不会显示,为true时才会显示

5.5 ngSwitch

angular中的switchcase

<ul [ngSwitch]="status"><li *ngSwitchCase="1">已支付</li><li *ngSwitchCase="2">订单已经确认</li> <li *ngSwitchCase="3">已发货</li><li *ngSwitchDefault>无效</li>
</ul>

当status为1时显示已支付,根据status的值不同显示不同的额li

5.6 事件绑定

事件绑定通过(事件名)="方法名()"完成绑定
通过()我们可以监听括号内对应的事件,当事件被触发时,会自动调用我们绑定的方法

<input type="button" (click)="say()">

上面这个例子表示该buton按钮的click会触发组件类中的say()方法,如果需要传入原生事件,可以增加$event,也就是

<input type="button" (click)="say($event)">

5.7 管道操作符

Angular 的常用内置管道函数:
DatePipe,UpperCasePipe,LowerCasePipe,CurrencyPipi,PercentPipe,JsonPipe等。
它们用于模板表达式中,只要使用管道操作符(|) 就行了。管道操作符会把它左侧的表达式结果传给它右侧的管道函数。还可以通过多个管道串联表达式

常用实例

<div class="alert alert-warning"> <p>{{title|uppercase }}</p> <p>{{title|uppercase|lowercase }}</p> <p>{{this|json}}</p> <p>{{time|date:'yyyy-MM-dd'}}</p> <p>{{number|percent}}</p> <p>{{number|currency:'CNY'}}</p> 
</div>

6.服务

在angular中,我们经常会在多个组件中使用到相同的方法,但是组件之间并不能互相访问对方的方法,所以这时候我们可以引入服务,将公共的方法放在服务中,当一个组件需要用到某个方法时,引入目标服务即可

在 Angular 中,要把一个类定义为服务,就要用 @Injectable() 装饰器来提供元数据,以便让 Angular 可以把它作为依赖注入到组件中。

你的应用中所需的任何依赖,都必须使用该应用的注入器来注册一个提供者,以便注入器可以使用这个提供者来创建新实例。 对于服务,该提供者通常就是服务类本身。

首先我们需要通过命令创建一个服务

ng g service 路径/服务名

在服务被创建后不会像组件一样被自动引入到模块中,所以如果我们需要在某个组件中使用该服务,需要在对应的模块中引入该服务

这里创建了一个名为counter的服务,并在根模块中引入

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';import { AppComponent } from './app.component';
import { HeaderComponent } from './components/header/header.component';
import { BottomComponent } from './components/bottom/bottom.component';import { CounterService } from './services/counter.service';@NgModule({declarations: [AppComponent,HeaderComponent,BottomComponent],imports: [BrowserModule],providers: [CounterService],bootstrap: [AppComponent]
})
export class AppModule { }

在我们需要用到该服务的组件中,我们需要再次引入服务,并在构造函数的参数中声明对应类型的参数,运行时服务会被注入

当 Angular 创建组件类的新实例时,它会通过查看该组件类的构造函数,来决定该组件依赖哪些服务或其它依赖项。
在这里插入图片描述

import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
import { CounterService } from '../../services/counter.service';@Component({selector: 'app-bottom',templateUrl: './bottom.component.html',styleUrls: ['./bottom.component.css']
})
export class BottomComponent implements OnInit {@Input() msg:string;@Output() private out = new EventEmitter();addCount:any;getCount:any;//注入CounterServiceconstructor(public counter:CounterService) { this.addCount = counter.addCount;this.getCount = counter.getCount;}emitMsg(){this.out.emit('我是bottom的msg')}showMsg(){alert(this.msg)}ngOnInit(): void {}}

在angular中我们可以直接使用localStorage操作浏览器的本地数据库,使用JSON.Stringfy将对象进行序列化,使用JSON.parse进行反序列化


7.父子组件交互

在开发中我们经常需要父子组件进行数据交互,因此angular为我们提供了下面几种交互方式

7.1 @ViewChild

Anguar中可通过@ViewChild操作DOM

首先为某个组件声明id

<div #box></box>

在组件类中通过@ViewChild完成组件的获取

@ViewChild('box') myBox:any;

然后如果我们想操作组件的dom对象,在方法中通过获取到的组件对象获取dom对象

this.myBox.nativeElement

上述三步就是获取某个dom对象的方法

下面我们再说一说如何通过@ViewChild操作子组件
与上面方式一样,只是省去了第三步,因为第二步就已经获取到了组件对象,可以通过组件对象调用目标组件的方法和成员变量

如果我们div组件中有个hello()函数,我们可以这样调用

this.myBox.hello()

7.2 @Input

angular通过@Input为我们提供了一种父组件向子组件传值的方法

假设现在有两个组件一个header和一个bottom,bttom被包含在header中

<app-bottom  [msg]="msg" ></app-bottom>

[msg]="msg"与前面属性绑定的意思相同,将header中的msg变量的值绑定到app-bottom中的msg属性中
此时,我们还不能直接拿到传过来的值,需要使用@Input

@Input() msg:string;

只有再botom组件中声明了这样一个变量,父组件才能够通过属性绑定的方式向子组件传值
不仅是值,也可以是方法,甚至如果[msg]=“this”,则会将父组件对象传递给子组件,这样在子组件中可以调用父组件的方法和变量

我们这样这样理解,通过@Input的变量就相当于当前组件的一个属性,通过在标签中我们可以像属性赋值

7.3 @Output

angular通过@Input为我们提供了一种子组件向父组件传值的方法
其实这种方式的原理就是子组件发起一个事件,事件中包含一些参数,通过父组件还需要监听该事件。就相当于我们监听click事件一样
除了Output我们还需引入EventEmitter,我们需要通过这个对象发起事件

import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
import { CounterService } from '../../services/counter.service';@Component({selector: 'app-bottom',templateUrl: './bottom.component.html',styleUrls: ['./bottom.component.css']
})
export class BottomComponent implements OnInit {@Output() private out = new EventEmitter();constructor() { }emitMsg(){this.out.emit('我是bottom的msg')}
}
<app-bottom (out)="showMsg($event)"></app-bottom>

在上面这个例子中,Bottom组件首先引入了Output, EventEmitter,再通过创建一个EventEmitter赋值给一个@Output()对象,其中@Output()对象的对象名代表事件的名字,因此我们在父组件中通过(out)进行事件的监听,我们this.out.emit(‘我是bottom的msg’)提交事件,并传入了参数,而在父组件中可以通过$event对象获取到事件的参数


8.生命周期

Angualr中组件的生命周期函数如下

  1. 构造函数
  2. ngOnChanges():父组件向子组件传值时,值发生变化时会触发
  3. ngOnInit():初始化指令/组件完成,通过该回调函数会用来做请求数据,只执行一次
  4. ngDoCheck():类中成员变量的值发生改变
  5. ngAfterContentInit():组件完成渲染
  6. ngAfterContentChecked():类中成员变量的值发生改变
  7. ngAfterViewInit():视图加载完成,如果需要操作dom,需要在这里执行,在前面执行会出错
  8. ngAfterViewChecked():类中成员变量的值发生改变
  9. ngOnDestory():销毁组件时,可以做一些保存的收尾工作
    在这里插入图片描述

9.异步操作

angular中可以通过以下几种方式执行异步操作

  • 回调函数
  • Promise
  • Rxjs异步数据流

9.1 回调函数

下面例子中我们声明了一个async1异步方法,执行一个定时器,当3秒后,会异步执行我们传入的的f()回调方法

async1(f:any){setTimeout(() => {f();}, 3000);}

9.2 Promise

Promise是ES6自带的一种异步方式,下面是promise的例子

async2():any{return new Promise(function (resolve, reject) {if (执行某些操作成功了) {resolve({name:'resolve'});}else {//执行失败reject({name:'err'});}})}async2().then(function(contents){//成功console.log(contents)
},function(err){//拒绝console.error(err.message)
})

9.3 Rxjs异步数据流

Rxjs异步数据流是angular自身提供的一种异步方式,相较于 Promise,Rxjs功能更加强大

  • 支持异步操作中途撤回
  • 可多次执行,每次都能取到值
  • 提供了多种工具函数

下面是具体的例子

首先我们需要引入Obervable

import {Observable} from 'rxjs'

定义一个返回Observable的异步方法

async3():any{return new Observable(observer => {//返回异步数据observer.next('async operation')})}

订阅事件

emitMsg(){this.async3().subscribe(value => console.log(value))}

10.请求

angular中请求有以下几种

  • get
  • post
  • jsonp
  • axios

10.1 get

首先在 app.module.ts 中引入 HttpClientModule 并注入

import {HttpClientModule} from '@angular/common/http';
imports: [BrowserModule,HttpClientModule
]

在用到的组件类中引入 HttpClient 并在构造函数声明

import {HttpClient} from "@angular/common/http";
constructor(public http:HttpClient) { }

get 请求数据

var api = "http://a.itying.com/api/productlist";
this.http.get(api).subscribe(response => {console.log(response);
});

10.2 post

前面几步与get相同,不同的地方在请求数据这一步,以及好需要引入HttpHeader来设置请求头

const httpOptions = {headers: new HttpHeaders({ 'Content-Type': 'application/json' })
};
var api = "http://127.0.0.1:3000/doLogin";
this.http.post(api,{username:'张三',age:'20'},httpOptions).subscribe(response => {console.log(response);
});

this.http.post(api,body,httpOptions)

10.3 jsonp

通过jsonp获取服务器数据是跨域的一种解决方案

首先在 app.module.ts 中引入 HttpClientModule、HttpClientJsonpModule 并注入

import {HttpClientModule,HttpClientJsonpModule} from
'@angular/common/http';
imports: [BrowserModule,HttpClientModule,HttpClientJsonpModule
]

在用到的组件类引入 HttpClient 并在构造函数声明

import {HttpClient} from "@angular/common/http";
constructor(public http:HttpClient) { }

jsonp 请求数据

var api = "http://a.itying.com/api/productlist";
this.http.jsonp(api,'callback').subscribe(response => {
console.log(response);
});

10.4 axios

除了前几种方式,还可以在Angular 中使用第三方模块 axios 请求数据
安装 axios

cnpm install axios --save

用到的组件类中引入 axios

import axios from 'axios';axios.get('/user?ID=12345')
.then(function (response) {
// handle success
console.log(response);
})
.catch(function (error) {
// handle error
console.log(error);
})
.then(function () {
// always executed
});

封装service作为http服务

import { Injectable } from '@angular/core';
import axios from 'axios';
@Injectable({providedIn: 'root'
})
export class HttpserviceService {constructor() { }axiosGet(api){return new Promise((resolve,reject)=>{axios.get(api).then(function (response) {// handle success     resolve(response)});})}  
}

11.路由

路由就是根据不同的url地址,动态地让根组件挂载其他组件来实现一个单页面应用

单页面应用的优劣

优点:
1、具有桌面应用的即时性、网站的可移植性和可访问性。
2、用户体验好、快,内容的改变不需要重新加载整个页面,web应用更具响应性和更令人着迷。
3、良好的前后端分离。SPA和RESTful架构一起使用,后端不再负责模板渲染、输出页面工作,web前端和各种移动终端地位对等,后端API通用化。
缺点:
1、分功能模块的鉴权不好实现。
2、不利于SEO。
3、初次加载耗时相对增多。
4、导航不可用,如果一定要导航需要自行实现前进、后退。

11.1 创建路由模块

当我们创建angular项目时,会提示我们是否安装路由,如果当时没有选择路由,可选用下面命令创建路由模块

ng generate module app-routing --flat --module=app

11.2 配置路由映射

在路由模块中配置路由映射
典型的Angular路由(Route)有两个属性:

1、path:一个用于匹配浏览器地址栏中URL的字符串。

2、component:当导航到此路由时,路由应该创建哪个组件。

如果说你希望当URL为http://localhost:4200/homePage时,首先要导入HomePageComponent;以便在Route中引用它

import { NgModule } from '@angular/core';
import {RouterModule, Routes} from "@angular/router";
import {HomePageComponent} from "../home-page/home-page.component";const routes: Routes = [{ path: 'homePage', component: HomePageComponent }
];
@NgModule({exports: [RouterModule]
})
export class AppRoutingModule { }

如果我们在路由的组件中还拥有一些子路由,我们可以在路由的children属性中配置
这样说有些抽象

现在假设我们的网站有一个头部导航栏和一个侧边栏,导航栏的点击会使得侧边栏的组件发生变化,这就是一个单层路由,但是既然我们有一个侧边栏,说明我们也需要根据侧边栏的选项在右边显示对应组件页面,因此,这样的路由就是嵌套的

下面是一个带参数传递的嵌套路由

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { HomeSideComponent } from './components/home-side/home-side.component';
import { NewsSideComponent } from './components/news-side/news-side.component';
import { SportsSideComponent } from './components/sports-side/sports-side.component';
import { ContentComponent } from './components/content/content.component';const routes: Routes = [{path:'home',component:HomeSideComponent,children:[{path:'detail/:id',component:ContentComponent}]},{path:'news',component:NewsSideComponent,children:[{path:'detail/:id',component:ContentComponent}]},{path:'sports',component:SportsSideComponent,children:[{path:'detail/:id',component:ContentComponent}]}
];@NgModule({imports: [RouterModule.forRoot(routes)],exports: [RouterModule]
})
export class AppRoutingModule { }

上面例子中,如果我们需要访问嵌套的路由组件,我们需要加上外层路由的地址加上内层路由的地址

11.3 RouterModule.forRoot()

初始化路由器,并让它开始监听浏览器的地址变化。(添加到 @NgModule.imports 数组中)

imports: [ RouterModule.forRoot(routes) ]

11.4 添加路由出口

<router-outlet></router-outlet>   // src/app/app.component.html

11.5 添加默认路由

有时候我们希望一进入页面即使是空的路径也会被跳转到某个路径
这里有两种方案
方案一

{ path: '', redirectTo: '/homePage', pathMatch: 'full' }

现在再次访问项目,你会发现地址栏默认会把一个空路径重定向到’/homePage’的路由;并且首页也加载了HomePageComponent。

方案二

{ path: '**', component:DashboardComponent}

**路径是一个通配符,表示除了以上几种path,任何的路径都会加载DashboardComponent组件,这个记得写在路由配置最后。

11.6 添加路由链接(routerLink)

不应该让用户只能把路由的 URL 粘贴到地址栏中。他们还应该能通过点击链接进行导航。

添加一个

<div>home-page works!<nav><a routerLink="/details">点击查看详情</a></nav>
</div>

同时需要把DetailsComponent引入到AppRoutingModule中。

点击查看详情这个链接。地址栏变成了/details,并且页面跳转到详情页。

11.7 添加详情视图(HTML传参)

现在假设我们首页展示的是一个文章列表,然后我们需要点击每一遍文章查看详情;如果说我们要导航到id为11的文章详情视图,类似于http://localhost:4200/heroes/11的URL。

首先打开AppRoutingModule并导入HeroesComponent。

import {HeroesComponent} from "./heroes/heroes.component";

然后把一个参数化路由添加到 AppRoutingModule.routes 数组中,它要匹配指向文章详情视图的路径。

{ path: 'heroes/:id', component: HeroesComponent }

path 中的冒号(:)表示 :id 是一个占位符,它表示某个特定英雄的 id。

此刻,路由就准备就绪了。

然后,我们需要修改HTML页面中的文章列表跳转链接,让它们能够通过参数化的路由进行导航到文章详情页面。

<nav><a routerLink="/heroes/{{id}}">点击查看文章详情</a><!--数组格式传参--><a [routerLink]="['/heroes', num]">点击查看文章详情</a>
</nav>

现在我们刷新页面点击查看文章详情,你发现,地址栏已经更改为http://localhost:4200/heroes/11,页面展示也已经跳转到文章详情页面模块

11.8 js页面跳转(传参)

我们现在需要通过js传参跳转到HeroesComponent(几个常用的方法):

1、先添加下列导入语句:

import { Router } from '@angular/router';//引入

然后把 Router注入到构造函数中,将它们的值保存到私有变量里:

constructor( private router: Router) { }//注入到构造函数

2、传递路由参数

单参传递

navigate()该方法支持的参数类型和routerLink指令一样,所以它们的作用也是一样的:

this.router.navigate(['heroes', id]);

或者:

this.router.navigate(['heroes']);

多参传递

this.router.navigate(['heroDetail'], {queryParams: {productId: '1',title: 'moon'})

3、我们注意到还有一个:navigateByUrl(),这个叫做绝对路由;

this.router.navigateByUrl('home');

区别:navigateByUrl()和navigate()的区别点是:navigateByUrl不是根据参数来确定路由地址的。

11.9 从路由参数中提取id

1、先添加下列导入语句:

import { ActivatedRoute } from ‘@angular/router’;
然后把 ActivatedRoute注入到构造函数中,将它们的值保存到私有变量里:

constructor(private route: ActivatedRoute,
) {}

ActivatedRoute 保存着到这个 HeroesComponent 实例的路由信息。 这个组件对从 URL 中提取的路由参数感兴趣。 其中的 id 参数就是要显示的英雄的 id。

2、获取路由参数

方法一:

 this.route.queryParams.subscribe(queryParams => {let productId = queryParams.productId;let title = queryParams.title;});

方法二:

代码如下:

  public params;  //公有变量ngOnInit() {this.getData();}getData() {this.route.params.subscribe(params => {this.params = params;console.log(this.params);});}

这样获取的是一个对象,直接获取id就可以了。

方法三:

代码如下:

ngOnInit(): void {this.getData();
}getData(): void {const id = +this.route.snapshot.paramMap.get('id');console.log(id);
}

11.10 回到原路

1、先添加下列导入语句:

import { Location } from '@angular/common';

然后把 Location 服务注入到构造函数中,将它们的值保存到私有变量里:

constructor(private location: Location
) {}

location 是一个 Angular 的服务,用来与浏览器打交道。 稍后,你就会使用它来导航回上一个视图。

2、点击返回页面:

通过点击浏览器的后退按钮,可以回到上一个你进入的页面。

把一个后退按钮添加到组件模板的底部,并且把它绑定到组件的 goBack() 方法。

<button (click)="goBack()">go back</button>

在组件类中添加一个 goBack() 方法,利用注入的Location 服务在浏览器的历史栈中后退一步。

goBack(): void {this.location.back();
}

12.自定义模块

10.1 创建自定义模块

执行 ng g module modules/user, 生成 user.module.ts

import { NgModule } from '@angular/core';import { CommonModule } from '@angular/common';import { AddressComponent } from './components/address/address.component';import { UserComponent } from './user.component';import { OrderComponent } from './components/order/order.component';import { CommonService } from './services/common.service'@NgModule({declarations: [AddressComponent, UserComponent, OrderComponent],// 导出该模块的组件,不导出的话,无法在其他模块使用该模块的组件exports: [UserComponent, OrderComponent],imports: [CommonModule],providers: [CommonService]})export class UserModule { }

10.2 导入自定义模块

在其他模块中导入自定义模块,导入后,自定义模块中暴露(exports)的组件就可以直接使用了

// 引入自定义模块import { UserModule } from './modules/user/user.module'@NgModule({declarations: [],imports: [UserModule // 导入自定义模块],providers: [],bootstrap: [AppComponent]})export class AppModule { }

10.3 通过路由动态加载自定义模块

一. 在自定义模块中创建自己的路由文件,通过命令或者手动创建

ng g module modules/user --routing 会生成一个 user.routing.ts 的文件。user.routing.ts文件中配置路由。配置方式

和根组件中配置一致。也可以配置子路由,配置方式一致。

import { UserComponent } from './user.component'import { AddressComponent } from './components/address/address.component'import { OrderComponent } from './components/order/order.component'const routes: Routes = [{ path: '', component: UserComponent },{ path: 'order', component: OrderComponent },{ path: 'address', component: AddressComponent }];@NgModule({imports: [RouterModule.forChild(routes)],exports: [RouterModule]})export class UserRoutingModule { }

二. 在user模块中引入 user.routing 。user.module.ts 中导入路由

import { UserRoutingModule } from './user-routing.module'import { UserComponent } from './user.component';import { AddressComponent } from './components/address/address.component';import { OrderComponent } from './components/order/order.component';import { CommonService } from './services/common.service'@NgModule({declarations: [UserComponent, AddressComponent, OrderComponent],// 导出该模块的组件,不导出的话,无法在其他模块使用该模块的组件// exports: [UserComponent, OrderComponent],imports: [CommonModule,UserRoutingModule],providers: [CommonService]})export class UserModule { }

三. 在根组件中引入自定义模块 app.module.ts

// 引入自定义模块import { UserModule } from './modules/user/user.module'@NgModule({imports: [BrowserModule,AppRoutingModule,UserModule],providers: [],bootstrap: [AppComponent]})

四. 在根路由模块中配置 app-routing.ts, 使用 loadChildren : ‘模块路径#模块类名称’

import { NgModule } from '@angular/core';import { Routes, RouterModule } from '@angular/router';const routes: Routes = [{ path: 'user', loadChildren: "./modules/user/user.module#UserModule" },{ path: 'news', loadChildren: "./modules/news/news.module#NewsModule" },{ path: 'product', loadChildren: "./modules/product/product.module#ProductModule" },{ path: '**', redirectTo: 'user' } ];@NgModule({imports: [RouterModule.forRoot(routes)],exports: [RouterModule]})export class AppRoutingModule { }
查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. Angular module加载的原理研究

    看个具体的例子&#xff0c;我们应用代码的index.ts里&#xff0c;要导入另一个module counter.reducer: require module id: exports.reducer里只能看到module里reducer这个函数&#xff1a; 要获取更多Jerry的原创文章&#xff0c;请关注公众号"汪子熙":...

    2024/4/28 0:04:30
  2. 新手也能看懂的angular的Inject原理

    看inject可以知道&#xff0c;inject需要传入一个InjectionToken类&#xff0c;该类需要传入providedIn和factory函数&#xff0c;代码如下&#xff1a; export declare class InjectionToken<T> {protected _desc: string;readonly ɵprov: never | undefined;construc…...

    2024/4/28 3:16:22
  3. Angular getSimpleChangesStore的实现原理

    父组件的ngOnInit钩子里&#xff0c;并没有SimpleChanges相关的数据结构&#xff1a; 而子组件就不一样了&#xff1a; 直接从Component实例的__ngSimpleChanges__字段里读取数据&#xff1a; 更多Jerry的原创文章&#xff0c;尽在&#xff1a;“汪子熙”:...

    2024/4/28 0:34:01
  4. angular 依赖注入原理

    依赖注入&#xff08;Dependency Injection&#xff0c;简称DI&#xff09;是像C#,java等典型的面向对象语言框架设计原则控制反转的一种典型的一种实现方式&#xff0c;angular把它引入到js中&#xff0c;介绍angular依赖注入的使用方式的文章很多&#xff0c;angular官方的文…...

    2024/4/28 8:31:31
  5. Angular FormBuilder的工作原理

    Cart view里的form控件&#xff1a; <form [formGroup]"checkoutForm" (ngSubmit)"onSubmit(checkoutForm.value)"><div><label for"name">Name</label><input id"name" type"text" formContro…...

    2024/4/21 2:14:37
  6. Angular 深入理解Router

    路由器 - 路由 什么是路由&#xff1f; 如果我们需要从一个页面链接到另一个页面&#xff0c;页面之间的跳转需要通过路由表来实现。&#xff08;页面与页面之间跳转&#xff0c;点击不同的按钮跳转到不同的页面&#xff09; <base href> 一般我们会将index.html作为<…...

    2024/4/27 23:43:06
  7. angular 双向数据绑定原理

    2019独角兽企业重金招聘Python工程师标准>>> 要理解angular双向数据绑定&#xff0c;首先要理解js的事件轮询---event-loop; JavaScript 运行机制详解&#xff1a;再谈Event Loop 这篇文章介绍的不错&#xff1b; 理解了以上内容之后就可以看下面这个文章&#xff1…...

    2024/4/28 8:16:09
  8. Angular @Hostbinding工作原理

    HostBinding()可以为指令的宿主元素添加类、样式、属性等。 使用HostBinding的一个例子&#xff1a; import { Directive, HostBinding, HostListener } from angular/core;Directive({selector: [appRainbow] }) export class RainbowDirective{possibleColors [darksalmon…...

    2024/4/25 4:13:46
  9. angular依赖注入:angular 依赖注入原理

    依赖注入&#xff08;Dependency Injection&#xff0c;简称DI&#xff09;是像C#,java等典型的面向对象语言框架设计原则控制反转的一种典型的一种实现方式&#xff0c;angular把它引入到js中&#xff0c;介绍angular依赖注入的使用方式的文章很多&#xff0c; angular官方的文…...

    2024/4/26 5:59:15
  10. 第三章 Angular工作原理

    应用 一个angular应用其实就是一棵由组件构成的树&#xff0c;在这棵树的根节点&#xff0c;最顶层的组件就是应用本身&#xff0c;它会在浏览器启动应用的时候被渲染。即&#xff1a;应用只是一个会渲染其它组件的组件。 数据模型 不要求使用指定的数据模型库。 组件 每个…...

    2024/4/26 2:09:57
  11. Angular双向数据绑定原理

    Angular是通过脏检测来进行双向数据绑定 Angular比不是通过定时去进行检测 Angular在$digest cycle流程里面&#xff0c;会从rootscope开始遍历&#xff0c;检查所有的watcher。 Angular只有指定事件触发&#xff0c;才会进入$digest cycle&#xff1a; 1.DOM事件&#xff…...

    2024/4/24 12:23:57
  12. Angular、Vue、React响应式原理对比分析

    Angular 脏值检测 Angular变更检测的周期 开发人员更新数据模型&#xff0c;例如通过更新组件绑定angular 检测变化变更检测从上到下检查组件树中的每个组件&#xff0c;以查看相应的模型是否已更改如果有新值&#xff0c;它将更新组件的视图&#xff08;DOM&#xff09; 我们…...

    2024/4/26 17:53:03
  13. Angular官方文档学习-英雄之旅

    Angular教程-英雄之旅 本教程需要完成的工作&#xff1a; 使用 Angular 的内置指令来显示 / 隐藏元素&#xff0c;并显示英雄数据的列表。创建 Angular 组件以显示英雄的详情&#xff0c;并显示一个英雄数组。为只读数据使用单向数据绑定。添加可编辑字段&#xff0c;使用双向…...

    2024/4/26 19:43:04
  14. angular快速 入门_带有Ag-Grid的Angular快速入门

    angular快速 入门角度安装 (Angular Installation) 先决条件 (Prerequisites) Angular projects are dependent on npm packages. So by installing Node.js, we by default get npm package manager, which is used to install npm packages.Angular项目依赖于npm软件包。 因此…...

    2024/4/28 0:24:27
  15. angular 制作一个就简单的autoComplete

    我们先来看下最终的交互效果&#xff1a; 思路&#xff1a; 1.创建一个autocomplete组件&#xff0c;并且接受一个名为Dom参数.(Dom是与之对应的文本框的节点) 2.创建一个指令[appFjAutocomplete]&#xff0c;exportAs设置为&#xff1a;‘app-fj’ 3.页面上&#xff0c;在文本…...

    2024/4/26 8:03:59
  16. angular---rxjs

    在angular中基础用法 import {Observable} from rxjs; //导入rxjs模块import { map, filter, scan } from rxjs/operators; //按需导入需要的操作符of(1, 2, 3) //创建一个可观察对象.pipe( //通过pipe管道符来先处理数据filter((value)>{if(value % 2 0){return true…...

    2024/4/23 16:17:35
  17. Angular - 学习/实践

    1.应用场景 维护旧的angularJS项目, 构建新的angular前端项目. 2.学习/操作 angularJS 与angular 不是一回事. 1. angular官方文档 https://angular.io/docs //Angular 官网 https://angular.cn/start //Angular 中文官网 2. 文件下载 https://cdn.staticfile.org/angul…...

    2024/4/25 13:55:48
  18. Angular-官方文档学习-1

    Angular 简介 AngularJS 是一个 JavaScript 框架。它可通过 AngularJS 通过 指令 扩展了 HTML&#xff0c;且通过 表达式 绑定数据到 HTML。 AngularJS 扩展了 HTML AngularJS 通过 ng-directives 扩展了 HTML。 ng-app 指令定义一个 AngularJS 应用程序。 ng-model 指令…...

    2024/4/26 12:38:49
  19. angular 相关推荐

    1、angular官网 中文官网&#xff1a;https://angular.cn/ 英文官网&#xff1a;https://angular.io/ 2、桌面端组件库 ng-zorro官网&#xff1a;https://ng.ant.design/docs/introduce/zh ng-alain官网&#xff08;桌面端脚手架&#xff09;&#xff1a;https://ng-alain…...

    2024/4/26 22:12:44
  20. Angular详解

    1、 AngularJS是什么&#xff1f; angularjs&#xff08;后面就简称ng了&#xff09;是一个用于设计动态web应用的结构框架。 首先&#xff0c;它是一个框架&#xff0c;不是类库&#xff0c;是像EXT一样提供一整套方案用于设计web应用。它不仅仅是一个JavaScript框架&#xff…...

    2024/4/25 5:03:16

最新文章

  1. Canal入门使用

    说明&#xff1a;canal [kə’nl]&#xff0c;译意为水道/管道/沟渠&#xff0c;主要用途是基于 MySQL 数据库增量日志解析&#xff0c;提供增量数据订阅和消费&#xff08;官方介绍&#xff09;。一言以蔽之&#xff0c;Canal是一款实现数据同步的组件。可以实现数据库之间、数…...

    2024/4/28 8:35:47
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 【Locust分布式压力测试】

    Locust分布式压力测试 https://docs.locust.io/en/stable/running-distributed.html Distributed load generation A single process running Locust can simulate a reasonably high throughput. For a simple test plan and small payloads it can make more than a thousan…...

    2024/4/27 9:20:29
  4. vue中内置指令v-model的作用和常见使用方法介绍以及在自定义组件上支持

    文章目录 一、v-model是什么二、什么是语法糖三、v-model常见的用法1、对于输入框&#xff08;input&#xff09;&#xff1a;2、对于复选框&#xff08;checkbox&#xff09;&#xff1a;3、对于选择框&#xff08;select&#xff09;&#xff1a;4、对于组件&#xff08;comp…...

    2024/4/25 21:37:22
  5. 策略模式图

    策略模式 小小的图解 主要的三个角色 Strategy—抽象策略角色ConcreateStrategy—具体策略角色Context—上下文角色 封装了对具体策略的调用可以使用set的依赖注入也可以使用构造方法 核心是上下文角色 只要调用上下文角色就行&#xff0c;实现解耦 策略 工厂 将上下文角…...

    2024/4/25 20:06:50
  6. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/26 18:09:39
  7. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/28 3:28:32
  8. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/26 23:05:52
  9. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/27 4:00:35
  10. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  12. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/27 9:01:45
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/25 18:39:16
  16. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/28 1:22:35
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/25 18:39:14
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/4/26 23:04:58
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/27 23:24:42
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/28 5:48:52
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/26 19:46:12
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/27 11:43:08
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/27 8:32:30
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57