Угловая 5 - Когда мне нужно использовать привязку '[свойство]' при использовании Input () [duplicate]

О, это работает, но не так, как вы ожидаете.

Когда вы устанавливаете активный кадр изображения gif, он фактически перезапускает свою анимацию из этого кадра. Вы должны остановить его при изменении фрейма, например, установив pictureBox.IsEnabled в false. Попробуйте использовать следующий код

private Image img;

public Form1()
{
    InitializeComponent();
    img = Image.FromFile(@"C:\Users\Administrator\TEST C#\TEST2frame2\chef.gif");
    pictureBox1.Image = img;
}

private void button1_Click(object sender, EventArgs e)
{
    var dim = new FrameDimension(img.FrameDimensionsList[0]);
    img.SelectActiveFrame(dim, 1);
    pictureBox1.Enabled = false;
}

Попробуйте нажать кнопку в разные моменты времени, и вы увидите, что будет изменяться рамка активного изображения.

17
задан Roman C 26 April 2017 в 12:16
поделиться

3 ответа

Когда вы используете [] для привязки к @Input(), это в основном выражение шаблона.

Точно так же отображение {{abc}} ничего не отображает (если у вас на самом деле не была указана переменная, называемая abc).

Если у вас есть строка @Input(), и вы хотите привязать ее к константной строке, вы можете связать ее следующим образом: [myText]=" 'some text' " или, короче говоря, как обычный HTML-атрибут: myText="some text".

Работала [myEnabled]="true", потому что true является допустимым выражением шаблона, которое, конечно, оценивается с помощью boolean true.

16
ответ дан Amit 17 August 2018 в 22:15
поделиться
  • 1
    Я даже не думал, что это то, что происходит на самом деле, вы уверены? Заявитель упомянул, что [myDirective]="myDefaultText" предоставил значение «my_efaultText real значение », хотя он имел в виду фактическое значение myDefaultText, что означает, что он по-прежнему рассматривается как выражение. – Amit 20 May 2017 в 17:09
  • 2
    Я был неправ. Пропустил & quot; реальное значение ". – Royi Namir 20 May 2017 в 18:23
  • 3
    Это описано в текущей документации на углы 4 на странице на этой странице . – 2Aguy 5 October 2017 в 13:55

binding [] для объектов, без него значение является строкой. Будьте осторожны с типами.

В коде

<div [myDirective]="myDefaultText" [myEnabled]="true"  [myText]="abc"></div>

вы пытались связать объект, но объект недоступен, поэтому его значение равно undefined. С другой стороны, если вы удаляете привязку, тогда объект ушел, у вас есть только значение string, присвоенное этому свойству.

4
ответ дан Roman C 17 August 2018 в 22:15
поделиться
  • 1
    Убедитесь, что вы не выполняете myEnabled="false", потому что это будет оцениваться как строка, и поскольку "false" действительно правдивое значение, оно не будет вести себя так, как вы ожидали. – Simon_Weaver 9 February 2018 в 21:13
  • 2
    Где вы это видели? – Roman C 10 February 2018 в 14:07

В скобках указано значение «Угловое» для вычисления выражения шаблона. Если вы опускаете скобки, Angular рассматривает строку как константу и инициализирует свойство target этой строкой. Он не оценивает строку!

Не делайте следующую ошибку:

    <!-- ERROR: HeroDetailComponent.hero expects a
         Hero object, not the string "currentHero" -->
    <hero-detail hero="currentHero"></hero-detail>

check: https://angular.io/docs/ts/latest /guide/template-syntax.html#!#property-binding

7
ответ дан sainu 17 August 2018 в 22:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: