Если вы используете эту функцию для генерации версии HTML5 datepicker для браузеров, формат даты должен быть yyyy-MM-dd
(формат ISO). Используя TextBoxFor()
, он должен быть
@Html.TextBoxFor(m => m.InitialDate, "{0:yyyy-MM-dd}", new { @class = "form-control", type = "date" })
. В качестве альтернативы добавьте следующие атрибуты к свойству
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public Nullable<System.DateTime> InitialDate { get; set; }
и в представлении используйте
@Html.EditorFor(m => m.InitialDate)
Обратите внимание, что это добавляет атрибут type="date"
Подписаться почти работает как обещание в javascript и имеет обратный вызов.
.subscribe(response=>this.user=response)
. Обратный вызов передается до конца текущего цикла события. Так что вы обращаетесь к
console.log(this.user)
до обратного вызова в вашей подписке исполняется.
вместо этого попробуйте
.subscribe((response) => {
this.user=response;
//you can access value of this.user here or call other function here to
//access this.user
console.log(this.user);
})
this.user
не сразу доступен после того, как вы позвоните subscribe()
, очень возможно, что getUser()
не выдало никакого результата к моменту вызова console.log(this.user)
.
Если вы просто хотели посмотреть, что в this.user
, вы можете попробовать сделать это в обратном вызове subscribe()
this.clientHeaderService.getUser().subscribe((response) => {
this.user = response;
console.log(this.user); // this.user should be available here
})
. На стороне шаблона вы сможете получить доступ к пользователю через {{ user }}
.
Я бы также предложил поделиться вашим минимальным воспроизводимым кодом на https://stackblitz.com/ , чтобы получить помощь легче.
Пользователь $ представляет поток, должен быть назначен следующим образом:
export class {
// a stream type
user$: Obserable<User>;
ngOnInit() {
// a stream type
this.user$ = this.clienteHeaderService.getUser();
}
}
и шаблон добавить |async
канал.