Angular应用程序由组件组成。 在Angular应用程序中,组件由HTML模板和组件类组成。 从官方文档:
组件是Angular应用程序中UI的最基本构建块。 Angular应用程序是Angular组件树。 角组件是指令的子集。 与指令不同,组件始终具有一个模板,并且模板中每个元素只能实例化一个组件。
在本教程中,您将学习如何使用Angular创建购物清单管理器。
入门
您需要Node version> 6.9.x和Node Package Manager(npm)>3.xx。一旦拥有两者,请尝试使用npm
安装Angular CLI。
npm install -g @angular/cli
安装Angular CLI后,尝试使用该项目创建一个项目。
ng new AngularGrocery --skip-npm
上面的命令将创建项目结构。 导航到项目目录并安装所需的依赖项。
cd AngularGrocery
npm install
要启动应用程序Web服务器,请键入以下命令:
ng serve
应用程序服务器启动后,将浏览器指向http:// localhost:4200 / ,您将能够查看默认应用程序。
应用结构
上图显示了我们的杂货清单管理器的应用程序结构。 src
文件夹包含默认应用程序的源代码。 src
文件夹内的app
文件夹包含TypeScript代码。 src
文件夹中的index.html
是呈现所创建的Angular组件的主要HTML文件。
创建添加项目视图
默认情况下,该应用程序具有app-root
组件。 让我们创建一个名为app-grocery
的新组件,以创建我们的杂货店经理应用程序。 在app文件夹中,创建一个名为app.grocery.ts
的文件。
从angular-core
导入Component
模块。
import { Component } from '@angular/core';
您将使用Bootstrap设计组件。 从官方网站 下载并包含Bootstrap软件包。 将文件保留在src/assets
文件夹中。
让我们在app.grocery.ts
文件中定义组件。 该组件将具有三个属性: selector
, template
和styleUrls
。 selector
指示组件的使用方式。 template
定义使用特定选择器时将呈现HTML。 styleUrls
定义组件中使用的样式的URL。
在app.grocery.ts
内部,一旦导入了组件模块,请如下所示定义app-grocery
组件:
@Component({
selector: 'app-grocery',
templateUrl: './app.grocery.html',
styleUrls: [
'../assets/css/bootstrap.min.css'
]
})
如上面的代码所示,该组件使用名为app.grocery.html
的模板。 在src/app
文件夹中创建一个名为app.grocery.html
的文件。 将以下代码添加到app.grocery.html
文件中:
<div>
<h2> Grocery list manager </h2>
<div class="row">
<div class="col-xs-6 col-md-4">
<div class="input-group">
<input type="text" class="form-control" placeholder="enter grocery items" id="txtSearch" />
<div class="input-group-btn">
<button class="btn btn-primary" type="button">
<span class="glyphicon glyphicon-ok"></span>
</button>
</div>
</div>
</div>
</div>
</div>
在app.grocery.ts
文件中,添加要导出的GroceryComponent
类。
export class GroceryComponent {
}
您需要先在app.module.ts
导入新创建的组件,然后才能使用它。 导入GroceryComponent
在app.module.ts
。
import { GroceryComponent } from './app.grocery';
在app.module.ts
文件中声明并引导新创建的Grocery组件。
@NgModule({
declarations: [
GroceryComponent
],
imports: [
BrowserModule,
FormsModule,
HttpModule
],
providers: [],
bootstrap: [GroceryComponent]
})
现在,您都可以使用index.html
页面中的Grocery组件。 从index.html
页面中删除默认组件,并添加以下HTML代码:
<app-grocery>Loading...</app-grocery>
保存以上更改,然后重新启动服务器。 将浏览器导航到http:// localhost:4200 / ,将显示Grocery组件。
添加项目
在输入文本框中输入项目后,您需要阅读该项目并将其保存在列表中。 要读取输入,您将使用ngModel
,它将把它绑定到一个变量。 将ngModel
添加到输入文本框中。
<input type="text" class="form-control" placeholder="enter grocery items" id="txtSearch" [(ngModel)]="task" />
每次在输入文本框中输入一些文本时, task
变量都会相应更新。 定义task
的内部变量GroceryComponent
在app.grocery.ts
文件。 添加一个名为tasks
的变量,以保留输入的任务集合。
task: string;
tasks = [];
单击“确定”按钮后,该任务将被添加到您在GroceryComponent
内部定义的tasks
集合列表中。 在GroceryComponent
内定义一个onClick
方法以处理OK按钮的单击。 外观如下:
onClick(){
this.tasks.push({name: this.task});
this.task = '';
}
将点击事件添加到“确定”按钮,如下所示:
<button class="btn btn-primary" type="button" (click)="onClick()">
<span class="glyphicon glyphicon-ok"></span>
</button>
单击确定按钮后,新任务将添加到tasks
集合列表中。 task
变量也被重置以清除输入文本框。
保存以上更改,并在输入task
并单击“确定”按钮后,将该任务添加到tasks
集合中。 要显示任务集合,请在app.grocery.html
添加一个跨度。
<span>
{{tasks | json}}
</span>
在输入框中输入任务,然后按确定按钮。 您将在页面上将tasks
变量显示为JSON。
这是完整的app.grocery.ts
文件:
import { Component } from '@angular/core';
@Component({
selector: 'app-grocery',
templateUrl: './app.grocery.html',
styleUrls: [
'../assets/css/bootstrap.min.css'
]
})
export class GroceryComponent {
task: string;
tasks = [];
onClick(){
this.tasks.push({name: this.task});
this.task = '';
}
}
显示添加的项目
现在,由于您已在tasks
变量中添加了项,因此可以使用它来显示任务。 您将使用NgFor
指令来迭代tasks
集合并动态创建用于显示任务HTML。 您将在UL元素内显示任务,并使用NgFor
指令重复LI。 外观如下:
<ul class="list-group">
<li *ngFor="let task of tasks" class="list-group-item">
<span> {{ task.name }} </span>
</li>
</ul>
如上面的代码所示,您遍历tasks
变量并动态创建LI元素和跨度。 完整的app.grocery.html
模板文件如下所示:
<div>
<h2> Grocery list manager </h2>
<div class="row">
<div class="col-xs-6 col-md-4">
<div class="input-group">
<input type="text" class="form-control" placeholder="enter grocery items" [(ngModel)]="task" />
<div class="input-group-btn">
<button class="btn btn-primary" type="button" (click)="onClick()">
<span class="glyphicon glyphicon-ok"></span>
</button>
</div>
</div>
</div>
</div>
<br />
<ul class="list-group">
<li *ngFor="let task of tasks" class="list-group-item">
<span> {{ task.name }} </span>
</li>
</ul>
</div>
保存以上更改,然后重新启动服务器。 将浏览器指向http:// localhost:4200 /并输入任务,然后按确定按钮。 每个添加的任务将显示在下面的列表中。
包起来
在此Angular教程中,您了解了如何开始使用Angular创建食品杂货清单管理器。 您学习了如何为杂货店组件创建视图,如何向杂货店列表中添加商品以及如何显示添加的商品。
在本教程的下一部分中,您将实现功能以标记完成的项目,存档完成的项目并删除添加的项目。
该教程的源代码可在GitHub上获得 。 请在下面的评论中告诉我们您的建议。