- Overview
- Transcript
4.3 Attribute Bindings
In this lesson we'll see how to bind a property of a component class to the attribute of an element. This is similar conceptually to property binding, but you can use it to target HTML attributes rather than DOM properties.
1.Introduction6 lessons, 42:00
1.1Introduction00:48
1.2Get Started With Angular-CLI11:09
1.3Developing With Angular-CLI13:17
1.4TypeScript vs. JavaScript06:54
1.5Angular Modules From the CLI04:31
1.6CLI Options05:21
2.Get Started With Angular7 lessons, 42:38
2.1Bootstrapping the Application04:30
2.2The Application Module04:15
2.3The Application Component08:06
2.4Component Styling03:06
2.5Global Styling05:11
2.6Creating a Component With the CLI09:34
2.7Creating a Service With the CLI07:56
3.Core Concepts7 lessons, 55:20
3.1Component Trees06:20
3.2Dependency Injection06:52
3.3Content Projection05:38
3.4Component and Directive Lifecycle Methods06:31
3.5Component-Only Lifecycle Methods05:28
3.6Decorators07:36
3.7Models16:55
4.Template Deep Dive11 lessons, 1:10:56
4.1Basic Data Binding With Interpolation05:35
4.2Property Bindings07:07
4.3Attribute Bindings03:29
4.4Event Bindings08:16
4.5Class and Style Bindings05:44
4.6The `NgClass` and `NgStyle` Directives05:04
4.7The `*ngIf` Directive04:41
4.8The `*ngFor` Directive09:29
4.9Inputs05:33
4.10Using Pipes in a Template07:31
4.11Using Pipes in a Class08:27
5.Forms10 lessons, 1:45:41
5.1Handling User Input With Template Reference Variables07:06
5.2Template-Driven Forms11:10
5.3Template-Driven Forms: Validation and Submission14:00
5.4Reactive Forms11:26
5.5Using a `FormBuilder`08:01
5.6Reactive Validation With Built-in Validators14:53
5.7Creating Custom Validators for Template-Driven Forms12:18
5.8Creating Custom Validators for Reactive Forms08:26
5.9Observing Form State Changes12:40
5.10Working With the `@HostListener` Decorator05:41
6.Routing9 lessons, 1:15:10
6.1Defining and Configuring Routes07:53
6.2Rendering Components With Router Outlets10:14
6.3Using Router Links for Navigation05:25
6.4Navigating Routes Using the Router06:24
6.5Determining the Active Route Using an Activated Route07:16
6.6Working With Route Parameters10:42
6.7Using Route Guards07:36
6.8Observing Router Events10:55
6.9Adding Child Routes08:45
7.Using the HTTP Client5 lessons, 56:24
7.1Sending an HTTP Request10:52
7.2Handling an HTTP Response11:22
7.3Setting Request Headers12:33
7.4Intercepting Requests09:04
7.5Finishing the Example Application12:33
8.Testing10 lessons, 1:23:27
8.1Service Unit Test Preparation10:45
8.2Unit Testing Services13:24
8.3Component Unit Test Preparation12:35
8.4Unit Testing Components07:27
8.5Unit Testing Component Templates06:58
8.6Unit Testing Pipes04:41
8.7Unit Testing Directives04:56
8.8Unit Testing Validators04:48
8.9Unit Testing Observables11:37
8.10Unit Testing HTTP Interceptors06:16
9.Building for Production1 lesson, 03:40
9.1Building for Production03:40
10.Conclusion1 lesson, 01:32
10.1Conclusion01:32
4.3 Attribute Bindings
Hi folks. In this lesson, we're going to see what we need to do when we want to bind to an HTML element attribute rather than a property. Usually we'll use property bindings much more often than attribute bindings, and property bindings should generally be preferred. But in some cases, we have no choice but to bind to an attribute. The most common use case for setting attributes, is when we're using area attributes. Because these are implemented only in HTML and not by the DOM at all, so there are no corresponding area properties, only area attributes. In our example app, at the moment, the game and end components are both hidden. As well as setting the hidden property, we can also set the area hidden attributes. The syntax for attribute bindings is actually very similar to the syntax that we use for property bindings. But let's try to see what happens if we set the area hidden attributes using a property binding. So we've used the same square bracket syntax here, let's go back to the browser and see what happens. So we can see now that our app doesn't even render. Let's take a look in the console. And we can see we've got a big, scary error message here. And it's so big we can't even see all of it. But at the top it tells us that we have template parse errors. And it can't bind to area hidden, since area hidden isn't a known property. That's not happening because we're setting the attributes on a component. We'd get exactly the same message if we tried to set an attribute using a property binding, on a regular HTML element. So to turn this into an attribute binding, we just need to prefix the name of the attribute with A-T-T-R. That tells angular that it's actually an attribute we want to bind to and not a property. Let's go back to the browser once again. And we can see that our page is rendered as before. Let's just open up the console. So we can see that the app game and the app end component still exist, but they're hidden. And we can see that they both have the area hidden attribute set to true, perfect. We should also probably set the same action attribute and hidden property on the start component for when we want to hide that a bit later on. And let's just add the corresponding property in the home components class. This time we'll set it to false. Otherwise we'll see very little on the page at all. So in this lesson we looked at attribute bindings. We saw that they are really similar to property bindings and work in a very similar way. And that they also use the square brackets around the binding targets. But to tell Angular that it's an attribute and not a property, we prefix the name of the attribute with A-T-T-R. Thanks for watching.