Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.

Commit c991f93

Browse files
committed
docs(guide/interpolation): add known issue (do not change the content of interpolated strings)
Closes #12813 Closes #14825
1 parent 52ddc13 commit c991f93

File tree

3 files changed

+25
-2
lines changed

3 files changed

+25
-2
lines changed

docs/content/guide/interpolation.ngdoc

+15-2
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ would be lost, because the browser ignores the attribute value.
3737
In the following example, the interpolation information would be ignored and the browser would simply
3838
interpret the attribute as present, meaning that the button would always be disabled.
3939

40-
```html
40+
```html
4141
Disabled: <input type="checkbox" ng-model="isDisabled" />
4242
<button disabled="{{isDisabled}}">Disabled</button>
4343
```
@@ -49,7 +49,7 @@ For this reason, Angular provides special `ng`-prefixed directives for the follo
4949
These directives take an expression inside the attribute, and set the corresponding boolean attribute
5050
to true when the expression evaluates to truthy.
5151

52-
```html
52+
```html
5353
Disabled: <input type="checkbox" ng-model="isDisabled" />
5454
<button ng-disabled="isDisabled">Disabled</button>
5555
```
@@ -106,6 +106,19 @@ can be used with `ngAttr` instead. The following is a list of known problematic
106106
- **type** in `<button>` in Internet Explorer 11 (see [issue 14117](https://github.com/angular/angular.js/issues/5025))
107107
- **value** in `<progress>` in Internet Explorer = 11 (see [issue 7218](https://github.com/angular/angular.js/issues/7218))
108108

109+
## Known Issues
110+
111+
### Dynamically changing an interpolated value
112+
113+
You should avoid dynamically changing the content of an interpolated string (e.g. attribute value
114+
or text node). Your changes are likely to be overwriten, when the original string gets evaluated.
115+
This restriction applies to both directly changing the content via JavaScript or indirectly using a
116+
directive.
117+
118+
For example, you should not use interpolation in the value of the `style` attribute (e.g.
119+
`style="color: {{ 'orange' }}; font-weight: {{ 'bold' }};"`) **and** at the same time use a
120+
directive that changes the content of that attributte, such as `ngStyle`.
121+
109122
### Embedding interpolation markup inside expressions
110123

111124
<div class="alert alert-danger">

src/ng/directive/ngClass.js

+5
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,11 @@ function classDirective(name, selector) {
153153
* When the expression changes, the previously added classes are removed and only then are the
154154
* new classes added.
155155
*
156+
* @knownIssue
157+
* You should not use {@link guide/interpolation interpolation} in the value of the `class`
158+
* attribute, when using the `ngClass` directive on the same element.
159+
* See {@link guide/interpolation#known-issues here} for more info.
160+
*
156161
* @animations
157162
* | Animation | Occurs |
158163
* |----------------------------------|-------------------------------------|

src/ng/directive/ngStyle.js

+5
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@
88
* @description
99
* The `ngStyle` directive allows you to set CSS style on an HTML element conditionally.
1010
*
11+
* @knownIssue
12+
* You should not use {@link guide/interpolation interpolation} in the value of the `style`
13+
* attribute, when using the `ngStyle` directive on the same element.
14+
* See {@link guide/interpolation#known-issues here} for more info.
15+
*
1116
* @element ANY
1217
* @param {expression} ngStyle
1318
*

0 commit comments

Comments
 (0)